|
1 | 1 | use crate::spec::{Cc, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
|
| 2 | +use object::elf; |
2 | 3 |
|
3 | 4 | /// A base target for AVR devices using the GNU toolchain.
|
4 | 5 | ///
|
@@ -29,3 +30,339 @@ pub fn target(target_cpu: &'static str, mmcu: &'static str) -> Target {
|
29 | 30 | },
|
30 | 31 | }
|
31 | 32 | }
|
| 33 | + |
| 34 | +/// Resolve the value of the EF_AVR_ARCH field for AVR ELF files, given the |
| 35 | +/// name of the target CPU / MCU. |
| 36 | +/// |
| 37 | +/// In ELF files using the AVR architecture, the lower 7 bits of the e_flags |
| 38 | +/// field is a code that identifies the "ISA revision" of the object code. |
| 39 | +/// |
| 40 | +/// This flag is generally set by AVR compilers in their output ELF files, |
| 41 | +/// and linkers like avr-ld check this flag in all of their input files to |
| 42 | +/// make sure they are compiled with the same ISA revision. |
| 43 | +pub fn ef_avr_arch(target_cpu: &str) -> u32 { |
| 44 | + // Adapted from llvm-project/llvm/lib/target/AVR/AVRDevices.td |
| 45 | + match target_cpu { |
| 46 | + // Generic MCUs |
| 47 | + "avr1" => elf::EF_AVR_ARCH_AVR1, |
| 48 | + "avr2" => elf::EF_AVR_ARCH_AVR2, |
| 49 | + "avr25" => elf::EF_AVR_ARCH_AVR25, |
| 50 | + "avr3" => elf::EF_AVR_ARCH_AVR3, |
| 51 | + "avr31" => elf::EF_AVR_ARCH_AVR31, |
| 52 | + "avr35" => elf::EF_AVR_ARCH_AVR35, |
| 53 | + "avr4" => elf::EF_AVR_ARCH_AVR4, |
| 54 | + "avr5" => elf::EF_AVR_ARCH_AVR5, |
| 55 | + "avr51" => elf::EF_AVR_ARCH_AVR51, |
| 56 | + "avr6" => elf::EF_AVR_ARCH_AVR6, |
| 57 | + "avrxmega1" => elf::EF_AVR_ARCH_XMEGA1, |
| 58 | + "avrxmega2" => elf::EF_AVR_ARCH_XMEGA2, |
| 59 | + "avrxmega3" => elf::EF_AVR_ARCH_XMEGA3, |
| 60 | + "avrxmega4" => elf::EF_AVR_ARCH_XMEGA4, |
| 61 | + "avrxmega5" => elf::EF_AVR_ARCH_XMEGA5, |
| 62 | + "avrxmega6" => elf::EF_AVR_ARCH_XMEGA6, |
| 63 | + "avrxmega7" => elf::EF_AVR_ARCH_XMEGA7, |
| 64 | + "avrtiny" => elf::EF_AVR_ARCH_AVRTINY, |
| 65 | + |
| 66 | + // Specific MCUs |
| 67 | + "at90s1200" => elf::EF_AVR_ARCH_AVR1, |
| 68 | + "attiny11" => elf::EF_AVR_ARCH_AVR1, |
| 69 | + "attiny12" => elf::EF_AVR_ARCH_AVR1, |
| 70 | + "attiny15" => elf::EF_AVR_ARCH_AVR1, |
| 71 | + "attiny28" => elf::EF_AVR_ARCH_AVR1, |
| 72 | + "at90s2313" => elf::EF_AVR_ARCH_AVR2, |
| 73 | + "at90s2323" => elf::EF_AVR_ARCH_AVR2, |
| 74 | + "at90s2333" => elf::EF_AVR_ARCH_AVR2, |
| 75 | + "at90s2343" => elf::EF_AVR_ARCH_AVR2, |
| 76 | + "attiny22" => elf::EF_AVR_ARCH_AVR2, |
| 77 | + "attiny26" => elf::EF_AVR_ARCH_AVR2, |
| 78 | + "at86rf401" => elf::EF_AVR_ARCH_AVR25, |
| 79 | + "at90s4414" => elf::EF_AVR_ARCH_AVR2, |
| 80 | + "at90s4433" => elf::EF_AVR_ARCH_AVR2, |
| 81 | + "at90s4434" => elf::EF_AVR_ARCH_AVR2, |
| 82 | + "at90s8515" => elf::EF_AVR_ARCH_AVR2, |
| 83 | + "at90c8534" => elf::EF_AVR_ARCH_AVR2, |
| 84 | + "at90s8535" => elf::EF_AVR_ARCH_AVR2, |
| 85 | + "ata5272" => elf::EF_AVR_ARCH_AVR25, |
| 86 | + "ata6616c" => elf::EF_AVR_ARCH_AVR25, |
| 87 | + "attiny13" => elf::EF_AVR_ARCH_AVR25, |
| 88 | + "attiny13a" => elf::EF_AVR_ARCH_AVR25, |
| 89 | + "attiny2313" => elf::EF_AVR_ARCH_AVR25, |
| 90 | + "attiny2313a" => elf::EF_AVR_ARCH_AVR25, |
| 91 | + "attiny24" => elf::EF_AVR_ARCH_AVR25, |
| 92 | + "attiny24a" => elf::EF_AVR_ARCH_AVR25, |
| 93 | + "attiny4313" => elf::EF_AVR_ARCH_AVR25, |
| 94 | + "attiny44" => elf::EF_AVR_ARCH_AVR25, |
| 95 | + "attiny44a" => elf::EF_AVR_ARCH_AVR25, |
| 96 | + "attiny84" => elf::EF_AVR_ARCH_AVR25, |
| 97 | + "attiny84a" => elf::EF_AVR_ARCH_AVR25, |
| 98 | + "attiny25" => elf::EF_AVR_ARCH_AVR25, |
| 99 | + "attiny45" => elf::EF_AVR_ARCH_AVR25, |
| 100 | + "attiny85" => elf::EF_AVR_ARCH_AVR25, |
| 101 | + "attiny261" => elf::EF_AVR_ARCH_AVR25, |
| 102 | + "attiny261a" => elf::EF_AVR_ARCH_AVR25, |
| 103 | + "attiny441" => elf::EF_AVR_ARCH_AVR25, |
| 104 | + "attiny461" => elf::EF_AVR_ARCH_AVR25, |
| 105 | + "attiny461a" => elf::EF_AVR_ARCH_AVR25, |
| 106 | + "attiny841" => elf::EF_AVR_ARCH_AVR25, |
| 107 | + "attiny861" => elf::EF_AVR_ARCH_AVR25, |
| 108 | + "attiny861a" => elf::EF_AVR_ARCH_AVR25, |
| 109 | + "attiny87" => elf::EF_AVR_ARCH_AVR25, |
| 110 | + "attiny43u" => elf::EF_AVR_ARCH_AVR25, |
| 111 | + "attiny48" => elf::EF_AVR_ARCH_AVR25, |
| 112 | + "attiny88" => elf::EF_AVR_ARCH_AVR25, |
| 113 | + "attiny828" => elf::EF_AVR_ARCH_AVR25, |
| 114 | + "at43usb355" => elf::EF_AVR_ARCH_AVR3, |
| 115 | + "at76c711" => elf::EF_AVR_ARCH_AVR3, |
| 116 | + "atmega103" => elf::EF_AVR_ARCH_AVR31, |
| 117 | + "at43usb320" => elf::EF_AVR_ARCH_AVR31, |
| 118 | + "attiny167" => elf::EF_AVR_ARCH_AVR35, |
| 119 | + "at90usb82" => elf::EF_AVR_ARCH_AVR35, |
| 120 | + "at90usb162" => elf::EF_AVR_ARCH_AVR35, |
| 121 | + "ata5505" => elf::EF_AVR_ARCH_AVR35, |
| 122 | + "ata6617c" => elf::EF_AVR_ARCH_AVR35, |
| 123 | + "ata664251" => elf::EF_AVR_ARCH_AVR35, |
| 124 | + "atmega8u2" => elf::EF_AVR_ARCH_AVR35, |
| 125 | + "atmega16u2" => elf::EF_AVR_ARCH_AVR35, |
| 126 | + "atmega32u2" => elf::EF_AVR_ARCH_AVR35, |
| 127 | + "attiny1634" => elf::EF_AVR_ARCH_AVR35, |
| 128 | + "atmega8" => elf::EF_AVR_ARCH_AVR4, |
| 129 | + "ata6289" => elf::EF_AVR_ARCH_AVR4, |
| 130 | + "atmega8a" => elf::EF_AVR_ARCH_AVR4, |
| 131 | + "ata6285" => elf::EF_AVR_ARCH_AVR4, |
| 132 | + "ata6286" => elf::EF_AVR_ARCH_AVR4, |
| 133 | + "ata6612c" => elf::EF_AVR_ARCH_AVR4, |
| 134 | + "atmega48" => elf::EF_AVR_ARCH_AVR4, |
| 135 | + "atmega48a" => elf::EF_AVR_ARCH_AVR4, |
| 136 | + "atmega48pa" => elf::EF_AVR_ARCH_AVR4, |
| 137 | + "atmega48pb" => elf::EF_AVR_ARCH_AVR4, |
| 138 | + "atmega48p" => elf::EF_AVR_ARCH_AVR4, |
| 139 | + "atmega88" => elf::EF_AVR_ARCH_AVR4, |
| 140 | + "atmega88a" => elf::EF_AVR_ARCH_AVR4, |
| 141 | + "atmega88p" => elf::EF_AVR_ARCH_AVR4, |
| 142 | + "atmega88pa" => elf::EF_AVR_ARCH_AVR4, |
| 143 | + "atmega88pb" => elf::EF_AVR_ARCH_AVR4, |
| 144 | + "atmega8515" => elf::EF_AVR_ARCH_AVR4, |
| 145 | + "atmega8535" => elf::EF_AVR_ARCH_AVR4, |
| 146 | + "atmega8hva" => elf::EF_AVR_ARCH_AVR4, |
| 147 | + "at90pwm1" => elf::EF_AVR_ARCH_AVR4, |
| 148 | + "at90pwm2" => elf::EF_AVR_ARCH_AVR4, |
| 149 | + "at90pwm2b" => elf::EF_AVR_ARCH_AVR4, |
| 150 | + "at90pwm3" => elf::EF_AVR_ARCH_AVR4, |
| 151 | + "at90pwm3b" => elf::EF_AVR_ARCH_AVR4, |
| 152 | + "at90pwm81" => elf::EF_AVR_ARCH_AVR4, |
| 153 | + "ata5702m322" => elf::EF_AVR_ARCH_AVR5, |
| 154 | + "ata5782" => elf::EF_AVR_ARCH_AVR5, |
| 155 | + "ata5790" => elf::EF_AVR_ARCH_AVR5, |
| 156 | + "ata5790n" => elf::EF_AVR_ARCH_AVR5, |
| 157 | + "ata5791" => elf::EF_AVR_ARCH_AVR5, |
| 158 | + "ata5795" => elf::EF_AVR_ARCH_AVR5, |
| 159 | + "ata5831" => elf::EF_AVR_ARCH_AVR5, |
| 160 | + "ata6613c" => elf::EF_AVR_ARCH_AVR5, |
| 161 | + "ata6614q" => elf::EF_AVR_ARCH_AVR5, |
| 162 | + "ata8210" => elf::EF_AVR_ARCH_AVR5, |
| 163 | + "ata8510" => elf::EF_AVR_ARCH_AVR5, |
| 164 | + "atmega16" => elf::EF_AVR_ARCH_AVR5, |
| 165 | + "atmega16a" => elf::EF_AVR_ARCH_AVR5, |
| 166 | + "atmega161" => elf::EF_AVR_ARCH_AVR5, |
| 167 | + "atmega162" => elf::EF_AVR_ARCH_AVR5, |
| 168 | + "atmega163" => elf::EF_AVR_ARCH_AVR5, |
| 169 | + "atmega164a" => elf::EF_AVR_ARCH_AVR5, |
| 170 | + "atmega164p" => elf::EF_AVR_ARCH_AVR5, |
| 171 | + "atmega164pa" => elf::EF_AVR_ARCH_AVR5, |
| 172 | + "atmega165" => elf::EF_AVR_ARCH_AVR5, |
| 173 | + "atmega165a" => elf::EF_AVR_ARCH_AVR5, |
| 174 | + "atmega165p" => elf::EF_AVR_ARCH_AVR5, |
| 175 | + "atmega165pa" => elf::EF_AVR_ARCH_AVR5, |
| 176 | + "atmega168" => elf::EF_AVR_ARCH_AVR5, |
| 177 | + "atmega168a" => elf::EF_AVR_ARCH_AVR5, |
| 178 | + "atmega168p" => elf::EF_AVR_ARCH_AVR5, |
| 179 | + "atmega168pa" => elf::EF_AVR_ARCH_AVR5, |
| 180 | + "atmega168pb" => elf::EF_AVR_ARCH_AVR5, |
| 181 | + "atmega169" => elf::EF_AVR_ARCH_AVR5, |
| 182 | + "atmega169a" => elf::EF_AVR_ARCH_AVR5, |
| 183 | + "atmega169p" => elf::EF_AVR_ARCH_AVR5, |
| 184 | + "atmega169pa" => elf::EF_AVR_ARCH_AVR5, |
| 185 | + "atmega32" => elf::EF_AVR_ARCH_AVR5, |
| 186 | + "atmega32a" => elf::EF_AVR_ARCH_AVR5, |
| 187 | + "atmega323" => elf::EF_AVR_ARCH_AVR5, |
| 188 | + "atmega324a" => elf::EF_AVR_ARCH_AVR5, |
| 189 | + "atmega324p" => elf::EF_AVR_ARCH_AVR5, |
| 190 | + "atmega324pa" => elf::EF_AVR_ARCH_AVR5, |
| 191 | + "atmega324pb" => elf::EF_AVR_ARCH_AVR5, |
| 192 | + "atmega325" => elf::EF_AVR_ARCH_AVR5, |
| 193 | + "atmega325a" => elf::EF_AVR_ARCH_AVR5, |
| 194 | + "atmega325p" => elf::EF_AVR_ARCH_AVR5, |
| 195 | + "atmega325pa" => elf::EF_AVR_ARCH_AVR5, |
| 196 | + "atmega3250" => elf::EF_AVR_ARCH_AVR5, |
| 197 | + "atmega3250a" => elf::EF_AVR_ARCH_AVR5, |
| 198 | + "atmega3250p" => elf::EF_AVR_ARCH_AVR5, |
| 199 | + "atmega3250pa" => elf::EF_AVR_ARCH_AVR5, |
| 200 | + "atmega328" => elf::EF_AVR_ARCH_AVR5, |
| 201 | + "atmega328p" => elf::EF_AVR_ARCH_AVR5, |
| 202 | + "atmega328pb" => elf::EF_AVR_ARCH_AVR5, |
| 203 | + "atmega329" => elf::EF_AVR_ARCH_AVR5, |
| 204 | + "atmega329a" => elf::EF_AVR_ARCH_AVR5, |
| 205 | + "atmega329p" => elf::EF_AVR_ARCH_AVR5, |
| 206 | + "atmega329pa" => elf::EF_AVR_ARCH_AVR5, |
| 207 | + "atmega3290" => elf::EF_AVR_ARCH_AVR5, |
| 208 | + "atmega3290a" => elf::EF_AVR_ARCH_AVR5, |
| 209 | + "atmega3290p" => elf::EF_AVR_ARCH_AVR5, |
| 210 | + "atmega3290pa" => elf::EF_AVR_ARCH_AVR5, |
| 211 | + "atmega406" => elf::EF_AVR_ARCH_AVR5, |
| 212 | + "atmega64" => elf::EF_AVR_ARCH_AVR5, |
| 213 | + "atmega64a" => elf::EF_AVR_ARCH_AVR5, |
| 214 | + "atmega640" => elf::EF_AVR_ARCH_AVR5, |
| 215 | + "atmega644" => elf::EF_AVR_ARCH_AVR5, |
| 216 | + "atmega644a" => elf::EF_AVR_ARCH_AVR5, |
| 217 | + "atmega644p" => elf::EF_AVR_ARCH_AVR5, |
| 218 | + "atmega644pa" => elf::EF_AVR_ARCH_AVR5, |
| 219 | + "atmega645" => elf::EF_AVR_ARCH_AVR5, |
| 220 | + "atmega645a" => elf::EF_AVR_ARCH_AVR5, |
| 221 | + "atmega645p" => elf::EF_AVR_ARCH_AVR5, |
| 222 | + "atmega649" => elf::EF_AVR_ARCH_AVR5, |
| 223 | + "atmega649a" => elf::EF_AVR_ARCH_AVR5, |
| 224 | + "atmega649p" => elf::EF_AVR_ARCH_AVR5, |
| 225 | + "atmega6450" => elf::EF_AVR_ARCH_AVR5, |
| 226 | + "atmega6450a" => elf::EF_AVR_ARCH_AVR5, |
| 227 | + "atmega6450p" => elf::EF_AVR_ARCH_AVR5, |
| 228 | + "atmega6490" => elf::EF_AVR_ARCH_AVR5, |
| 229 | + "atmega6490a" => elf::EF_AVR_ARCH_AVR5, |
| 230 | + "atmega6490p" => elf::EF_AVR_ARCH_AVR5, |
| 231 | + "atmega64rfr2" => elf::EF_AVR_ARCH_AVR5, |
| 232 | + "atmega644rfr2" => elf::EF_AVR_ARCH_AVR5, |
| 233 | + "atmega16hva" => elf::EF_AVR_ARCH_AVR5, |
| 234 | + "atmega16hva2" => elf::EF_AVR_ARCH_AVR5, |
| 235 | + "atmega16hvb" => elf::EF_AVR_ARCH_AVR5, |
| 236 | + "atmega16hvbrevb" => elf::EF_AVR_ARCH_AVR5, |
| 237 | + "atmega32hvb" => elf::EF_AVR_ARCH_AVR5, |
| 238 | + "atmega32hvbrevb" => elf::EF_AVR_ARCH_AVR5, |
| 239 | + "atmega64hve" => elf::EF_AVR_ARCH_AVR5, |
| 240 | + "atmega64hve2" => elf::EF_AVR_ARCH_AVR5, |
| 241 | + "at90can32" => elf::EF_AVR_ARCH_AVR5, |
| 242 | + "at90can64" => elf::EF_AVR_ARCH_AVR5, |
| 243 | + "at90pwm161" => elf::EF_AVR_ARCH_AVR5, |
| 244 | + "at90pwm216" => elf::EF_AVR_ARCH_AVR5, |
| 245 | + "at90pwm316" => elf::EF_AVR_ARCH_AVR5, |
| 246 | + "atmega32c1" => elf::EF_AVR_ARCH_AVR5, |
| 247 | + "atmega64c1" => elf::EF_AVR_ARCH_AVR5, |
| 248 | + "atmega16m1" => elf::EF_AVR_ARCH_AVR5, |
| 249 | + "atmega32m1" => elf::EF_AVR_ARCH_AVR5, |
| 250 | + "atmega64m1" => elf::EF_AVR_ARCH_AVR5, |
| 251 | + "atmega16u4" => elf::EF_AVR_ARCH_AVR5, |
| 252 | + "atmega32u4" => elf::EF_AVR_ARCH_AVR5, |
| 253 | + "atmega32u6" => elf::EF_AVR_ARCH_AVR5, |
| 254 | + "at90usb646" => elf::EF_AVR_ARCH_AVR5, |
| 255 | + "at90usb647" => elf::EF_AVR_ARCH_AVR5, |
| 256 | + "at90scr100" => elf::EF_AVR_ARCH_AVR5, |
| 257 | + "at94k" => elf::EF_AVR_ARCH_AVR5, |
| 258 | + "m3000" => elf::EF_AVR_ARCH_AVR5, |
| 259 | + "atmega128" => elf::EF_AVR_ARCH_AVR51, |
| 260 | + "atmega128a" => elf::EF_AVR_ARCH_AVR51, |
| 261 | + "atmega1280" => elf::EF_AVR_ARCH_AVR51, |
| 262 | + "atmega1281" => elf::EF_AVR_ARCH_AVR51, |
| 263 | + "atmega1284" => elf::EF_AVR_ARCH_AVR51, |
| 264 | + "atmega1284p" => elf::EF_AVR_ARCH_AVR51, |
| 265 | + "atmega128rfa1" => elf::EF_AVR_ARCH_AVR51, |
| 266 | + "atmega128rfr2" => elf::EF_AVR_ARCH_AVR51, |
| 267 | + "atmega1284rfr2" => elf::EF_AVR_ARCH_AVR51, |
| 268 | + "at90can128" => elf::EF_AVR_ARCH_AVR51, |
| 269 | + "at90usb1286" => elf::EF_AVR_ARCH_AVR51, |
| 270 | + "at90usb1287" => elf::EF_AVR_ARCH_AVR51, |
| 271 | + "atmega2560" => elf::EF_AVR_ARCH_AVR6, |
| 272 | + "atmega2561" => elf::EF_AVR_ARCH_AVR6, |
| 273 | + "atmega256rfr2" => elf::EF_AVR_ARCH_AVR6, |
| 274 | + "atmega2564rfr2" => elf::EF_AVR_ARCH_AVR6, |
| 275 | + "atxmega16a4" => elf::EF_AVR_ARCH_XMEGA2, |
| 276 | + "atxmega16a4u" => elf::EF_AVR_ARCH_XMEGA2, |
| 277 | + "atxmega16c4" => elf::EF_AVR_ARCH_XMEGA2, |
| 278 | + "atxmega16d4" => elf::EF_AVR_ARCH_XMEGA2, |
| 279 | + "atxmega32a4" => elf::EF_AVR_ARCH_XMEGA2, |
| 280 | + "atxmega32a4u" => elf::EF_AVR_ARCH_XMEGA2, |
| 281 | + "atxmega32c3" => elf::EF_AVR_ARCH_XMEGA2, |
| 282 | + "atxmega32c4" => elf::EF_AVR_ARCH_XMEGA2, |
| 283 | + "atxmega32d3" => elf::EF_AVR_ARCH_XMEGA2, |
| 284 | + "atxmega32d4" => elf::EF_AVR_ARCH_XMEGA2, |
| 285 | + "atxmega32e5" => elf::EF_AVR_ARCH_XMEGA2, |
| 286 | + "atxmega16e5" => elf::EF_AVR_ARCH_XMEGA2, |
| 287 | + "atxmega8e5" => elf::EF_AVR_ARCH_XMEGA2, |
| 288 | + "atxmega64a3" => elf::EF_AVR_ARCH_XMEGA4, |
| 289 | + "atxmega64a3u" => elf::EF_AVR_ARCH_XMEGA4, |
| 290 | + "atxmega64a4u" => elf::EF_AVR_ARCH_XMEGA4, |
| 291 | + "atxmega64b1" => elf::EF_AVR_ARCH_XMEGA4, |
| 292 | + "atxmega64b3" => elf::EF_AVR_ARCH_XMEGA4, |
| 293 | + "atxmega64c3" => elf::EF_AVR_ARCH_XMEGA4, |
| 294 | + "atxmega64d3" => elf::EF_AVR_ARCH_XMEGA4, |
| 295 | + "atxmega64d4" => elf::EF_AVR_ARCH_XMEGA4, |
| 296 | + "atxmega64a1" => elf::EF_AVR_ARCH_XMEGA5, |
| 297 | + "atxmega64a1u" => elf::EF_AVR_ARCH_XMEGA5, |
| 298 | + "atxmega128a3" => elf::EF_AVR_ARCH_XMEGA6, |
| 299 | + "atxmega128a3u" => elf::EF_AVR_ARCH_XMEGA6, |
| 300 | + "atxmega128b1" => elf::EF_AVR_ARCH_XMEGA6, |
| 301 | + "atxmega128b3" => elf::EF_AVR_ARCH_XMEGA6, |
| 302 | + "atxmega128c3" => elf::EF_AVR_ARCH_XMEGA6, |
| 303 | + "atxmega128d3" => elf::EF_AVR_ARCH_XMEGA6, |
| 304 | + "atxmega128d4" => elf::EF_AVR_ARCH_XMEGA6, |
| 305 | + "atxmega192a3" => elf::EF_AVR_ARCH_XMEGA6, |
| 306 | + "atxmega192a3u" => elf::EF_AVR_ARCH_XMEGA6, |
| 307 | + "atxmega192c3" => elf::EF_AVR_ARCH_XMEGA6, |
| 308 | + "atxmega192d3" => elf::EF_AVR_ARCH_XMEGA6, |
| 309 | + "atxmega256a3" => elf::EF_AVR_ARCH_XMEGA6, |
| 310 | + "atxmega256a3u" => elf::EF_AVR_ARCH_XMEGA6, |
| 311 | + "atxmega256a3b" => elf::EF_AVR_ARCH_XMEGA6, |
| 312 | + "atxmega256a3bu" => elf::EF_AVR_ARCH_XMEGA6, |
| 313 | + "atxmega256c3" => elf::EF_AVR_ARCH_XMEGA6, |
| 314 | + "atxmega256d3" => elf::EF_AVR_ARCH_XMEGA6, |
| 315 | + "atxmega384c3" => elf::EF_AVR_ARCH_XMEGA6, |
| 316 | + "atxmega384d3" => elf::EF_AVR_ARCH_XMEGA6, |
| 317 | + "atxmega128a1" => elf::EF_AVR_ARCH_XMEGA7, |
| 318 | + "atxmega128a1u" => elf::EF_AVR_ARCH_XMEGA7, |
| 319 | + "atxmega128a4u" => elf::EF_AVR_ARCH_XMEGA7, |
| 320 | + "attiny4" => elf::EF_AVR_ARCH_AVRTINY, |
| 321 | + "attiny5" => elf::EF_AVR_ARCH_AVRTINY, |
| 322 | + "attiny9" => elf::EF_AVR_ARCH_AVRTINY, |
| 323 | + "attiny10" => elf::EF_AVR_ARCH_AVRTINY, |
| 324 | + "attiny20" => elf::EF_AVR_ARCH_AVRTINY, |
| 325 | + "attiny40" => elf::EF_AVR_ARCH_AVRTINY, |
| 326 | + "attiny102" => elf::EF_AVR_ARCH_AVRTINY, |
| 327 | + "attiny104" => elf::EF_AVR_ARCH_AVRTINY, |
| 328 | + "attiny202" => elf::EF_AVR_ARCH_XMEGA3, |
| 329 | + "attiny402" => elf::EF_AVR_ARCH_XMEGA3, |
| 330 | + "attiny204" => elf::EF_AVR_ARCH_XMEGA3, |
| 331 | + "attiny404" => elf::EF_AVR_ARCH_XMEGA3, |
| 332 | + "attiny804" => elf::EF_AVR_ARCH_XMEGA3, |
| 333 | + "attiny1604" => elf::EF_AVR_ARCH_XMEGA3, |
| 334 | + "attiny406" => elf::EF_AVR_ARCH_XMEGA3, |
| 335 | + "attiny806" => elf::EF_AVR_ARCH_XMEGA3, |
| 336 | + "attiny1606" => elf::EF_AVR_ARCH_XMEGA3, |
| 337 | + "attiny807" => elf::EF_AVR_ARCH_XMEGA3, |
| 338 | + "attiny1607" => elf::EF_AVR_ARCH_XMEGA3, |
| 339 | + "attiny212" => elf::EF_AVR_ARCH_XMEGA3, |
| 340 | + "attiny412" => elf::EF_AVR_ARCH_XMEGA3, |
| 341 | + "attiny214" => elf::EF_AVR_ARCH_XMEGA3, |
| 342 | + "attiny414" => elf::EF_AVR_ARCH_XMEGA3, |
| 343 | + "attiny814" => elf::EF_AVR_ARCH_XMEGA3, |
| 344 | + "attiny1614" => elf::EF_AVR_ARCH_XMEGA3, |
| 345 | + "attiny416" => elf::EF_AVR_ARCH_XMEGA3, |
| 346 | + "attiny816" => elf::EF_AVR_ARCH_XMEGA3, |
| 347 | + "attiny1616" => elf::EF_AVR_ARCH_XMEGA3, |
| 348 | + "attiny3216" => elf::EF_AVR_ARCH_XMEGA3, |
| 349 | + "attiny417" => elf::EF_AVR_ARCH_XMEGA3, |
| 350 | + "attiny817" => elf::EF_AVR_ARCH_XMEGA3, |
| 351 | + "attiny1617" => elf::EF_AVR_ARCH_XMEGA3, |
| 352 | + "attiny3217" => elf::EF_AVR_ARCH_XMEGA3, |
| 353 | + "attiny1624" => elf::EF_AVR_ARCH_XMEGA3, |
| 354 | + "attiny1626" => elf::EF_AVR_ARCH_XMEGA3, |
| 355 | + "attiny1627" => elf::EF_AVR_ARCH_XMEGA3, |
| 356 | + "atmega808" => elf::EF_AVR_ARCH_XMEGA3, |
| 357 | + "atmega809" => elf::EF_AVR_ARCH_XMEGA3, |
| 358 | + "atmega1608" => elf::EF_AVR_ARCH_XMEGA3, |
| 359 | + "atmega1609" => elf::EF_AVR_ARCH_XMEGA3, |
| 360 | + "atmega3208" => elf::EF_AVR_ARCH_XMEGA3, |
| 361 | + "atmega3209" => elf::EF_AVR_ARCH_XMEGA3, |
| 362 | + "atmega4808" => elf::EF_AVR_ARCH_XMEGA3, |
| 363 | + "atmega4809" => elf::EF_AVR_ARCH_XMEGA3, |
| 364 | + |
| 365 | + // Unknown target CPU => Unspecified/generic code |
| 366 | + _ => 0, |
| 367 | + } |
| 368 | +} |
0 commit comments