Rev 1748 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1748 | Rev 1771 | ||
|---|---|---|---|
| Line 28... | Line 28... | ||
| 28 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 | # |
29 | # |
| 30 | 30 | ||
| 31 | [ "$#" -lt 1 ] && exit 1 |
31 | [ "$#" -lt 1 ] && exit 1 |
| 32 | 32 | ||
| 33 | case "$1" in |
- | |
| 34 | "binary") |
- | |
| 35 | BFD="binary" |
- | |
| 36 | ;; |
- | |
| 37 | "ecoff") |
- | |
| 38 | BFD="ecoff-littlemips" |
- | |
| 39 | ;; |
- | |
| 40 | *) |
- | |
| 41 | echo "Undefined image format" >&1 |
- | |
| 42 | exit 1 |
- | |
| 43 | ;; |
- | |
| 44 | esac |
- | |
| 45 | - | ||
| 46 | OBJCOPY="$2" |
33 | OBJCOPY="$1" |
| 47 | LINK="_link.ld" |
34 | LINK="_link.ld" |
| 48 | HEADER="_components.h" |
35 | HEADER="_components.h" |
| 49 | 36 | ||
| 50 | shift 2 |
37 | shift |
| 51 | 38 | ||
| 52 | echo "OUTPUT_FORMAT(\"${BFD}\") |
39 | echo 'OUTPUT_FORMAT("elf64-sparc") |
| 53 | ENTRY(start) |
40 | ENTRY(start) |
| 54 | 41 | ||
| 55 | SECTIONS { |
42 | SECTIONS { |
| 56 | .boot 0xbfc00000: AT (0) { |
43 | .boot 0x4000: AT (0) { |
| 57 | *(BOOTSTRAP); |
44 | *(BOOTSTRAP); |
| 58 | *(.text); |
45 | *(.text); |
| 59 | - | ||
| 60 | *(.rodata); |
46 | *(.rodata); |
| 61 | *(.rodata.*); |
47 | *(.rodata.*); |
| 62 | *(.data); /* initialized data */ |
48 | *(.data); /* initialized data */ |
| 63 | *(.sdata); |
49 | *(.sdata); |
| 64 | *(.sdata2); |
50 | *(.sdata2); |
| 65 | *(.sbss); |
51 | *(.sbss); |
| 66 | *(.scommon); |
- | |
| 67 | *(.bss); /* uninitialized static variables */ |
52 | *(.bss); /* uninitialized static variables */ |
| 68 | *(COMMON); /* global variables */ |
- | |
| 69 | *(.reginfo);" > "$LINK" |
53 | *(COMMON);' > "$LINK" |
| 70 | 54 | ||
| 71 | echo '#ifndef ___COMPONENTS_H__ |
55 | echo '#ifndef ___COMPONENTS_H__ |
| 72 | #define ___COMPONENTS_H__ |
56 | #define ___COMPONENTS_H__ |
| 73 | 57 | ||
| 74 | typedef struct { |
58 | typedef struct { |
| Line 88... | Line 72... | ||
| 88 | SYMBOL="`echo "_binary_$TASK" | tr "./" "__"`" |
72 | SYMBOL="`echo "_binary_$TASK" | tr "./" "__"`" |
| 89 | MACRO="`echo "$BASENAME" | tr [:lower:] [:upper:]`" |
73 | MACRO="`echo "$BASENAME" | tr [:lower:] [:upper:]`" |
| 90 | echo "$TASK -> $OBJECT" |
74 | echo "$TASK -> $OBJECT" |
| 91 | 75 | ||
| 92 | echo " |
76 | echo " |
| 93 | . = ALIGN(4096); |
77 | . = ALIGN(8192); |
| 94 | *(.${BASENAME}_image);" >> "$LINK" |
78 | *(.${BASENAME}_image);" >> "$LINK" |
| 95 | 79 | ||
| 96 | echo " |
80 | echo " |
| 97 | extern int ${SYMBOL}_start; |
81 | extern int ${SYMBOL}_start; |
| 98 | extern int ${SYMBOL}_end; |
82 | extern int ${SYMBOL}_end; |
| 99 | 83 | ||
| 100 | #define ${MACRO}_START ((void *) &${SYMBOL}_start) |
84 | #define ${MACRO}_START ((void *) &${SYMBOL}_start) |
| 101 | #define ${MACRO}_END ((void *) &${SYMBOL}_end) |
85 | #define ${MACRO}_END ((void *) &${SYMBOL}_end) |
| 102 | #define ${MACRO}_SIZE ((unsigned int) ${MACRO}_END - (unsigned int) ${MACRO}_START)" >> "$HEADER" |
86 | #define ${MACRO}_SIZE ((unsigned int) ${MACRO}_END - (unsigned int) ${MACRO}_START)" >> "$HEADER" |
| 103 | 87 | ||
| 104 | "$OBJCOPY" -I binary -O elf32-tradlittlemips -B mips --rename-section ".data=.${BASENAME}_image" "$TASK" "$OBJECT" |
88 | "$OBJCOPY" -I binary -O elf64-sparc -B sparc --rename-section ".data=.${BASENAME}_image" "$TASK" "$OBJECT" |
| 105 | 89 | ||
| 106 | DATA="${DATA} |
90 | DATA="${DATA} |
| 107 | components[$COUNT].name = \"${BASENAME}\"; |
91 | components[$COUNT].name = \"${BASENAME}\"; |
| 108 | components[$COUNT].start = ${MACRO}_START; |
92 | components[$COUNT].start = ${MACRO}_START; |
| 109 | components[$COUNT].end = ${MACRO}_END; |
93 | components[$COUNT].end = ${MACRO}_END; |