Changeset 609 for branches/GNU/src/binutils/ld/genscripts.sh
- Timestamp:
- Aug 16, 2003, 6:59:22 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/binutils/ld/genscripts.sh
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.1.1.2
r608 r609 4 4 # Usage: genscripts.sh srcdir libdir exec_prefix \ 5 5 # host target target_alias default_emulation \ 6 # native_lib_dirs this_emulation tool_dir6 # native_lib_dirs use_sysroot this_emulation tool_dir 7 7 # 8 8 # Sample usage: 9 9 # genscripts.sh /djm/ld-devo/devo/ld /usr/local/lib /usr/local \ 10 10 # sparc-sun-sunos4.1.3 sparc-sun-sunos4.1.3 sparc-sun-sunos4.1.3 sun4 \ 11 # "" sun3 sparc-sun-sunos4.1.311 # "" no sun3 sparc-sun-sunos4.1.3 12 12 # produces sun3.x sun3.xbn sun3.xn sun3.xr sun3.xu em_sun3.c 13 13 … … 20 20 EMULATION_LIBPATH=$7 21 21 NATIVE_LIB_DIRS=$8 22 EMULATION_NAME=$922 use_sysroot=$9 23 23 shift 9 24 EMULATION_NAME=$1 25 shift 24 26 # Can't use ${1:-$target_alias} here due to an Ultrix shell bug. 25 27 if [ "x$1" = "x" ] ; then … … 38 40 fi 39 41 42 # Set some flags for the emultempl scripts. USE_LIBPATH will 43 # be set for any libpath-using emulation; NATIVE will be set for a 44 # libpath-using emulation where ${host} = ${target}. NATIVE 45 # may already have been set by the emulparams file, but that's OK 46 # (it'll just get set to "yes" twice). 47 48 case " $EMULATION_LIBPATH " in 49 *" ${EMULATION_NAME} "*) 50 if [ "x${host}" = "x${target}" ] ; then 51 NATIVE=yes 52 USE_LIBPATH=yes 53 elif [ "x${use_sysroot}" = "xyes" ] ; then 54 USE_LIBPATH=yes 55 fi 56 ;; 57 esac 58 59 # If the emulparams file sets NATIVE, make sure USE_LIBPATH is set also. 60 if test "x$NATIVE" = "xyes" ; then 61 USE_LIBPATH=yes 62 fi 63 40 64 # Set the library search path, for libraries named by -lfoo. 41 65 # If LIB_PATH is defined (e.g., by Makefile) and non-empty, it is used. … … 44 68 # The format is the usual list of colon-separated directories. 45 69 # To force a logically empty LIB_PATH, do LIBPATH=":". 46 47 if [ "x${LIB_PATH}" = "x" ] ; then 48 # Cross, or native non-default emulation not requesting LIB_PATH. 49 LIB_PATH= 50 51 if [ "x${host}" = "x${target}" ] ; then 52 case " $EMULATION_LIBPATH " in 53 *" ${EMULATION_NAME} "*) 54 # Native, and default or emulation requesting LIB_PATH. 55 LIB_PATH=/lib:/usr/lib 56 if [ -n "${NATIVE_LIB_DIRS}" ]; then 57 LIB_PATH=${LIB_PATH}:${NATIVE_LIB_DIRS} 58 fi 59 if [ "${libdir}" != /usr/lib ]; then 60 LIB_PATH=${LIB_PATH}:${libdir} 61 fi 62 if [ "${libdir}" != /usr/local/lib ] ; then 63 LIB_PATH=${LIB_PATH}:/usr/local/lib 64 fi 70 # 71 # If we are using a sysroot, prefix library paths with "=" to indicate this. 72 # 73 # If the emulparams file set LIBPATH_SUFFIX, prepend an extra copy of 74 # the library path with the suffix applied. 75 76 if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then 77 if [ x"$use_sysroot" != xyes ] ; then 78 LIB_PATH=${libdir} 79 fi 80 LIB_PATH2="" 81 for lib in ${NATIVE_LIB_DIRS}; do 82 # The "=" is harmless if we aren't using a sysroot, but also needless. 83 if [ "x${use_sysroot}" = "xyes" ] ; then 84 lib="=${lib}" 85 fi 86 addsuffix= 87 case "${LIBPATH_SUFFIX}:${lib}" in 88 :*) ;; 89 *:*${LIBPATH_SUFFIX}) ;; 90 *) addsuffix=yes ;; 65 91 esac 66 fi 67 fi 68 69 # Always search $(tooldir)/lib, aka /usr/local/TARGET/lib. 70 LIB_PATH=${LIB_PATH}:${tool_lib} 71 72 LIB_SEARCH_DIRS=`echo ${LIB_PATH} | tr ':' ' ' | sed -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\1);/g'` 92 if test -n "$addsuffix"; then 93 case :${LIB_PATH}: in 94 *:${lib}${LIBPATH_SUFFIX}:*) ;; 95 ::) LIB_PATH=${lib}${LIBPATH_SUFFIX} ;; 96 *) LIB_PATH=${LIB_PATH}:${lib}${LIBPATH_SUFFIX} ;; 97 esac 98 case :${LIB_PATH}${LIB_PATH2}: in 99 *:${lib}:*) ;; 100 *) LIB_PATH2=${LIB_PATH2}:${lib} ;; 101 esac 102 else 103 case :${LIB_PATH}: in 104 *:${lib}:*) ;; 105 ::) LIB_PATH=${lib} ;; 106 *) LIB_PATH=${LIB_PATH}:${lib} ;; 107 esac 108 fi 109 done 110 LIB_PATH=${LIB_PATH}${LIB_PATH2} 111 fi 112 113 114 # Always search $(tooldir)/lib, aka /usr/local/TARGET/lib, except for 115 # sysrooted configurations. 116 if [ "x${use_sysroot}" != "xyes" ] ; then 117 LIB_PATH=${tool_lib}:${LIB_PATH} 118 fi 119 120 LIB_SEARCH_DIRS=`echo ${LIB_PATH} | sed -e 's/:/ /g' -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'` 73 121 74 122 # Generate 5 or 6 script files from a master script template in … … 85 133 # flag; it is only generated if $GENERATE_SHLIB_SCRIPT is set by the 86 134 # emulation parameters. 87 88 SEGMENT_SIZE=${SEGMENT_SIZE-${TARGET_PAGE_SIZE}} 135 # A .xc script is for linking with -z combreloc; it is only generated if 136 # $GENERATE_COMBRELOC_SCRIPT is set by the emulation parameters or 137 # $SCRIPT_NAME is "elf". 138 # A .xsc script is for linking with --shared -z combreloc; it is generated 139 # if $GENERATE_COMBRELOC_SCRIPT is set by the emulation parameters or 140 # $SCRIPT_NAME is "elf" and $GENERATE_SHLIB_SCRIPT is set by the emulation 141 # parameters too. 142 143 if [ "x$SCRIPT_NAME" = "xelf" ]; then 144 GENERATE_COMBRELOC_SCRIPT=yes 145 fi 146 147 SEGMENT_SIZE=${SEGMENT_SIZE-${MAXPAGESIZE-${TARGET_PAGE_SIZE}}} 89 148 90 149 # Determine DATA_ALIGNMENT for the 5 variants, using … … 100 159 DATA_ALIGNMENT=${DATA_ALIGNMENT_r} 101 160 DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})" 102 (. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc) | sed -e '/^ *$/d' > \ 103 ldscripts/${EMULATION_NAME}.xr 161 ( echo "/* Script for ld -r: link without relocation */" 162 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 163 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 164 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xr 104 165 105 166 LD_FLAG=u 106 167 DATA_ALIGNMENT=${DATA_ALIGNMENT_u} 107 168 CONSTRUCTING=" " 108 (. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc) | sed -e '/^ *$/d' > \ 109 ldscripts/${EMULATION_NAME}.xu 169 ( echo "/* Script for ld -Ur: link w/out relocation, do create constructors */" 170 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 171 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 172 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xu 110 173 111 174 LD_FLAG= 112 175 DATA_ALIGNMENT=${DATA_ALIGNMENT_} 113 176 RELOCATING=" " 114 (. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc) | sed -e '/^ *$/d' > \ 115 ldscripts/${EMULATION_NAME}.x 177 ( echo "/* Default linker script, for normal executables */" 178 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 179 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 180 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.x 116 181 117 182 LD_FLAG=n 118 183 DATA_ALIGNMENT=${DATA_ALIGNMENT_n} 119 184 TEXT_START_ADDR=${NONPAGED_TEXT_START_ADDR-${TEXT_START_ADDR}} 120 (. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc) | sed -e '/^ *$/d' > \ 121 ldscripts/${EMULATION_NAME}.xn 185 ( echo "/* Script for -n: mix text and data on same page */" 186 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 187 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 188 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xn 122 189 123 190 LD_FLAG=N 124 191 DATA_ALIGNMENT=${DATA_ALIGNMENT_N} 125 (. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc) | sed -e '/^ *$/d' > \ 126 ldscripts/${EMULATION_NAME}.xbn 192 ( echo "/* Script for -N: mix text and data on same page; don't align data */" 193 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 194 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 195 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xbn 196 197 if test -n "$GENERATE_COMBRELOC_SCRIPT"; then 198 DATA_ALIGNMENT=${DATA_ALIGNMENT_c-${DATA_ALIGNMENT_}} 199 LD_FLAG=c 200 COMBRELOC=ldscripts/${EMULATION_NAME}.xc.tmp 201 ( echo "/* Script for -z combreloc: combine and sort reloc sections */" 202 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 203 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 204 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xc 205 rm -f ${COMBRELOC} 206 COMBRELOC= 207 fi 127 208 128 209 if test -n "$GENERATE_SHLIB_SCRIPT"; then … … 131 212 CREATE_SHLIB=" " 132 213 # Note that TEXT_START_ADDR is set to NONPAGED_TEXT_START_ADDR. 133 (. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc) | sed -e '/^ *$/d' > \ 134 ldscripts/${EMULATION_NAME}.xs 135 fi 136 137 for i in $EMULATION_LIBPATH ; do 138 test "$i" = "$EMULATION_NAME" && COMPILE_IN=true 139 done 214 ( 215 echo "/* Script for ld --shared: link shared library */" 216 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 217 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 218 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xs 219 if test -n "$GENERATE_COMBRELOC_SCRIPT"; then 220 LD_FLAG=cshared 221 DATA_ALIGNMENT=${DATA_ALIGNMENT_sc-${DATA_ALIGNMENT}} 222 COMBRELOC=ldscripts/${EMULATION_NAME}.xc.tmp 223 ( echo "/* Script for --shared -z combreloc: shared library, combine & sort relocs */" 224 . ${srcdir}/emulparams/${EMULATION_NAME}.sh 225 . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc 226 ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xsc 227 rm -f ${COMBRELOC} 228 COMBRELOC= 229 fi 230 fi 231 232 case " $EMULATION_LIBPATH " in 233 *" ${EMULATION_NAME} "*) COMPILE_IN=true;; 234 esac 140 235 141 236 # Generate e${EMULATION_NAME}.c. -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.