123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/bin/bash
- # Copyright 2016 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- if [ "$#" == "0" ] ; then
- echo "Usage: make_test_files.sh <output dir>"
- exit 1
- fi
- cd $1
- OUTPUT_DIR=`pwd`
- TMP=`mktemp -d`
- CC="${CC:-cc}"
- echo Writing output to $OUTPUT_DIR
- echo Working in $TMP
- cd $TMP
- function publish() {
- echo $1
- cp $1 $OUTPUT_DIR
- }
- function make_tmp_obj() {
- FILE=$1
- CONTENTS="$2"
- CFILE=`basename $1`.c
- echo "$CONTENTS" > $CFILE
- $CC -g -fPIC -o $FILE -c $CFILE
- }
- function make_obj() {
- FILE=$1
- CONTENTS="$2"
- make_tmp_obj $FILE "$CONTENTS"
- publish $FILE
- }
- function make_ar() {
- FILE=$1
- shift
- ar rcs $FILE "$@"
- publish $FILE
- }
- function make_so() {
- FILE=$1
- shift
- $CC -g -shared -o $FILE "$@"
- publish $FILE
- }
- function make_binary() {
- FILE=$1
- shift
- $CC -o $FILE "$@"
- publish $FILE
- }
- make_obj "01-empty.o" ""
- make_obj "02-simple.o" "
- #include <stdint.h>
- uint64_t bss_a = 0;
- uint32_t bss_b = 0;
- uint64_t data_a = 1;
- uint32_t data_b = 2;
- const uint64_t rodata_a = 1;
- const uint32_t rodata_b = 2;
- uint32_t func1() { return bss_b / 17; }
- uint32_t func2() { return data_b / 17; }"
- make_tmp_obj "foo.o" "
- int foo_x[1000] = {0};
- int foo_y = 0;
- int foo_func() { return foo_y / 17; }
- "
- make_tmp_obj "bar.o" "
- int bar_x[1000] = {1};
- int bar_y = 1;
- int bar_z = 0;
- int bar_func() { return bar_y / 17; }
- "
- make_tmp_obj "a_filename_longer_than_sixteen_chars.o" "
- int long_filename_x[3] = {1};
- int long_filename_y = 2;
- "
- make_ar "03-simple.a" "foo.o" "bar.o" "a_filename_longer_than_sixteen_chars.o"
- make_so "04-simple.so" "foo.o" "bar.o"
- make_tmp_obj "main.o" "int main() {}"
- make_binary "05-binary.bin" "foo.o" "bar.o" "main.o"
- # Make an object like foo.o but with different sizes.
- make_tmp_obj "foo2.o" "
- int foo_x[500] = {0};
- long long foo_y = 0;
- int foo_func() { return foo_y / 17 * 37 / 21; }
- "
- make_ar "06-diff.a" "foo2.o" "bar.o" "a_filename_longer_than_sixteen_chars.o"
- cp "05-binary.bin" "07-binary-stripped.bin"
- strip "07-binary-stripped.bin"
- publish "07-binary-stripped.bin"
|