⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genscript.sh

📁 vxworks 6.x 的全部头文件
💻 SH
字号:
#!/bin/sh# genScript.sh## a shell script to generate linker scripts.## TODO:# 1. convenience labels like etext, edata, end, and wrs_kernel_*_{start,end}#    are primarily used by ROM kernels and can most likely be omitted from RAM#    kernels. But they're harmless and it makes script sharing easier.# 2. "classic" convenience labels (etext/edata/end) should be phased out in#    favor of the newer ones. Further, DAT has requested that we make the new#    names conform to wrsInitialCapitals style.# 3. Due to the template generation strategy employed here, the final output#    may look a little awkwardly formatted and certainly is not as clean and#    simple as the early versions of the Diab scripts. Suggestions welcome.#    I actually think this might not be such a bad application for (gasp!) Tcl,#    so a future Tcl rewrite (which also helps windows users) is possible.# 4. Currently GNU aligns everything to 16. This is probably overkill on many#    chips, and especially once everyone is ELF, the internal section alignment#    should take care of things -- except for convenience labels which need to#    guarantee 4 byte alignment for use with copyLongs and fillLongs.# 5. General convergence...mod_history(){cat <<'EOF'/*modification history--------------------01r,25aug05,dlk  Support .text.init, .text.fast, .data.init, .data.fast.01r,29jul05,slk  SPR 104264: fix MIPS romResident images01q,06may05,rlg  changes for MIPS specific devices01p,03jul04,f_b  Improved support for data alignment01o,12dec03,sn   added more .rodata.str1.* handlers01n,04dec03,sn   Diab: .rodata.* is not handled correctly by Diab linker; instead		 use specific names01m,28oct03,sn   Diab: collapse .rodata.cst* sections into .rodata01l,29may02,tpw  Diab: pad out sections, needed for MIPS byteswap. SPR 7807601k,24apr02,sn   GNU: SPR 75835 - added support for relocatable script link.OUT01j,19apr02,tpw  Diab: provide _etext for ColdFire. SPR 7512201i,06feb02,sn   Both: place .got2 to handle tramp.o (_x_gnu_tramp.o).01h,25jan02,tpw  GNU: give debug sections explicit 0 addresses.01g,14jan02,tpw  Diab: place .eh_frame data, in case of insistent GNU objects.01f,14dec01,tpw  Diab: provide both underscore options of wrs_kernel* here too.01e,05dec01,tpw  Both: Add .boot and .reset section support, for PPC 4xx series                 and Book E.01d,05dec01,tpw  Diab: Add .frame_info section to text region.01c,03dec01,jab  Diab: replaced LOAD() with AT()01b,14nov01,tpw  ALL: Correct some more bootrom/kernel issues.01b,06nov01,tpw  GNU: Add /DISCARD/ directive to discard uninteresting sections01a,01nov01,tpw  gnu script written01a,29oct01,jab  diab script written*/EOF}filename="$1"TOOL="$2"shift 2style="$*"align=16am1=`expr $align - 1`bind=""[ "$TOOL" = diab ] && bind=BINDdot_boot_text="  .boot $bind(wrs_kernel_text_start + wrs_kernel_rom_size - 0x800) :  {  *(.boot)  }  .reset $bind(wrs_kernel_text_start + wrs_kernel_rom_size - 4) :  {  *(.reset)  }"bind=""[ "$TOOL" = diab ] && bind=BIND  kseg0data_text="  .kseg0data $bind((_VX_START_TEXT - 0x7e00) & 0xbfffffff) :  {      *(.kseg0data)  }"bind=""[ "$TOOL" = diab ] && bind=BINDkseg0data_data="  .kseg0data $bind((_VX_START_DATA - 0x7e00) & 0xbfffffff) :  {      *(.kseg0data)  }"diab_data_group_text="  }  GROUP BIND(_VX_START_DATA) : {"diab_data_group_aligned="  }  GROUP BIND((etext + _VX_DATA_ALIGN - 1) & -_VX_DATA_ALIGN) : {"gnu_data_group_aligned="  . = ALIGN(_VX_DATA_ALIGN);"named_debug_sections="  /* Stabs debugging sections.  */  .stab 0 : { *(.stab) }  .stabstr 0 : { *(.stabstr) }  .stab.excl 0 : { *(.stab.excl) }  .stab.exclstr 0 : { *(.stab.exclstr) }  .stab.index 0 : { *(.stab.index) }  .stab.indexstr 0 : { *(.stab.indexstr) }  .comment 0 : { *(.comment) }  /* DWARF debug sections.     Symbols in the DWARF debugging sections are relative to the beginning     of the section so we begin them at 0.  */  /* DWARF 1 */  .debug          0 : { *(.debug) }  .line           0 : { *(.line) }  /* GNU DWARF 1 extensions */  .debug_srcinfo  0 : { *(.debug_srcinfo) }  .debug_sfnames  0 : { *(.debug_sfnames) }  /* DWARF 1.1 and DWARF 2 */  .debug_aranges  0 : { *(.debug_aranges) }  .debug_pubnames 0 : { *(.debug_pubnames) }  /* DWARF 2 */  .debug_info     0 : { *(.debug_info) }  .debug_abbrev   0 : { *(.debug_abbrev) }  .debug_line     0 : { *(.debug_line) }  .debug_frame    0 : { *(.debug_frame) }  .debug_str      0 : { *(.debug_str) }  .debug_loc      0 : { *(.debug_loc) }  .debug_macinfo  0 : { *(.debug_macinfo) }  /* SGI/MIPS DWARF 2 extensions */  .debug_weaknames 0 : { *(.debug_weaknames) }  .debug_funcnames 0 : { *(.debug_funcnames) }  .debug_typenames 0 : { *(.debug_typenames) }  .debug_varnames  0 : { *(.debug_varnames) }"rom_at=""dot_boot=""kseg0data=""gnu_data_group=""diab_data_group=""zero=""wrs_kernel_text_start="wrs_kernel_text_start = .; _wrs_kernel_text_start = .;"wrs_kernel_text_fast="wrs_kernel_text_fast = .; _wrs_kernel_text_fast = .;"wrs_kernel_text_init="wrs_kernel_text_init = .; _wrs_kernel_text_init = .;"wrs_kernel_text_end="wrs_kernel_text_end = .; _wrs_kernel_text_end = .;"etext="etext = .; _etext = .;"wrs_kernel_data_start="wrs_kernel_data_start = .; _wrs_kernel_data_start = .;"wrs_kernel_data_fast="wrs_kernel_data_fast = .; _wrs_kernel_data_fast = .;"wrs_kernel_data_init="wrs_kernel_data_init = .; _wrs_kernel_data_init = .;"wrs_kernel_data_end="wrs_kernel_data_end = .; _wrs_kernel_data_end = .;"edata="edata = .; _edata = .;"wrs_kernel_bss_start="wrs_kernel_bss_start = .; _wrs_kernel_bss_start = .;"wrs_kernel_bss_end="wrs_kernel_bss_end = .; _wrs_kernel_bss_end = .;"end="end = .; _end = .;"gp_mips_diab="_gp = ((. + $am1) & ~$am1) + 0x7ff0;"gp_mips_gnu="_gp = ALIGN(16) + 0x7ff0;		/* set gp for MIPS startup code */"sec_align_diab=". = ((. + 3) & ~3);"sec_align_gnu=". = ALIGN($align);"for argdo    case "$arg" in	AOUT)		named_debug_sections=""				;;	ROM)		diab_data_group="$diab_data_group_text"		;			if [ "$kseg0data" != "" ]; then			    kseg0data="$kseg0data_data"			fi			rom_at=" AT(etext)"				;;	RAM)		gnu_data_group="$gnu_data_group_aligned"	;			diab_data_group="$diab_data_group_aligned"	;;	DOTBOOT)	dot_boot="$dot_boot_text"			;;	MIPS)		kseg0data="$kseg0data_text"			;;	OUT)            zero="0"			wrs_kernel_text_start=""			wrs_kernel_text_fast=""			wrs_kernel_text_init=""			wrs_kernel_text_end=""			etext=""			wrs_kernel_data_start=""			wrs_kernel_data_fast=""			wrs_kernel_data_init=""			wrs_kernel_data_end=""			edata=""			wrs_kernel_bss_start=""			wrs_kernel_bss_end=""			end=""			gp_mips_gnu=""			gp_mips_diab=""			sec_align_gnu=""			sec_align_diab=""			;;	*)		echo "$0: '$arg' unknown." 1>&2	;	exit 1	;;    esacdonecat <<EOF/* $filename - $TOOL linker command file for VxWorks: $style *//* Copyright 1984-2001 Wind River Systems, Inc. *//* This file was automatically generated using tool/common/ldscripts. */EOFmod_historyif [ "$TOOL" = diab ]; thencat <<EOFSECTIONS {  GROUP BIND(_VX_START_TEXT) : {    .text (TEXT) : {      $wrs_kernel_text_start      *(.text)      $wrs_kernel_text_fast      *(.text.fast)      $wrs_kernel_text_init      *(.text.init)      *(.rdata) *(.rodata) *(.rodata.cst8) *(.rodata.cst4) *(.rodata.str1.1) *(.rodata.str1.2) *(.rodata.str1.4) *(.rodata.str1.8) *(.rodata.str1.16) *(.rodata.str1.32) *(.rodata.str1.64) *(.rodata.str1.128) *(.rodata.str1.256)      *(.init) *(.fini)      *(.frame_info)      *(.sdata2)      $sec_align_diab    }    $sec_align_diab    $etext    $wrs_kernel_text_end$diab_data_group    .data (DATA)$rom_at : {      $wrs_kernel_data_start      *(.data)      $wrs_kernel_data_fast      *(.data.fast)      $wrs_kernel_data_init      *(.data.init)      *(.eh_frame)	/* Some GNU objects insist on having .eh_frame data. */      *(.ctors)      *(.dtors)      /* set gp for MIPS startup code */      $gp_mips_diab      *(.got2)      *(.sdata)      $sec_align_diab    }    $sec_align_diab    $edata    $wrs_kernel_data_end    .bss (BSS) : {      $wrs_kernel_bss_start      *(.sbss)      *(.bss)      $sec_align_diab    }    $sec_align_diab    $end    $wrs_kernel_bss_end  }$kseg0data$dot_boot}EOFelse# presume $TOOL = gnucat <<EOFENTRY(_start)SECTIONS{  .text     $zero :  {    $wrs_kernel_text_start    _VX_START_TEXT = .;    *(.text)    $wrs_kernel_text_fast    *(.text.fast)    $wrs_kernel_text_init    *(.text.init)    *(.text.*) *(.stub) *(.gnu.warning) *(.gnu.linkonce.t*)    KEEP(*(.init)) KEEP(*(.fini))    *(.glue_7t) *(.glue_7) *(.rdata)			/* for ARM */    *(.mips16.fn.*) *(.mips16.call.*) *(.reginfo)	/* for MIPS */    *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.rodata1)    *(.sdata2) *(.sbss2)				/* for PPC */    $sec_align_gnu  }  $sec_align_gnu  $wrs_kernel_text_end  $etext$gnu_data_group  .data   $zero :$rom_at  {    $wrs_kernel_data_start    _VX_START_DATA = .;    *(.data)    $wrs_kernel_data_fast    *(.data.fast)    $wrs_kernel_data_init    *(.data.init)    *(.data.*) *(.gnu.linkonce.d*) SORT(CONSTRUCTORS) *(.data1)    *(.eh_frame) *(.gcc_except_table)    KEEP (*crtbegin.o(.ctors))    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))    KEEP (*(SORT(.ctors.*)))    KEEP (*(.ctors))    KEEP (*crtbegin.o(.dtors))    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))    KEEP (*(SORT(.dtors.*)))    KEEP (*(.dtors))    $gp_mips_gnu    /* got*, dynamic, sdata*, lit[48], and sbss should follow _gp */    *(.got.plt) *(.got) *(.dynamic)    *(.got2)    *(.sdata) *(.sdata.*) *(.lit8) *(.lit4)    $sec_align_gnu  }  $sec_align_gnu  $edata  $wrs_kernel_data_end  .bss     $zero  :  {    $wrs_kernel_bss_start    *(.sbss) *(.scommon) *(.dynbss) *(.bss) *(COMMON)    $sec_align_gnu  }  $sec_align_gnu  $end  $wrs_kernel_bss_end$kseg0data$dot_boot  /DISCARD/ :  {  *(.note)				/* seen on Pentium ELF */  *(.comment)				/* seen on PPC & SH ELF */  *(.pdr)				/* seen on MIPS ELF */  }$named_debug_sections}EOFfi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -