Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: bfd/elf32-m68hc12.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « bfd/elf32-m68hc11.c ('k') | bfd/elf32-m68hc1x.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
None
OLDNEW
1 /* Motorola 68HC12-specific support for 32-bit ELF 1 /* Motorola 68HC12-specific support for 32-bit ELF
2 Copyright 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007 2 Copyright 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2010, 2012
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 Contributed by Stephane Carrez (stcarrez@nerim.fr) 4 Contributed by Stephane Carrez (stcarrez@nerim.fr)
5 (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com)) 5 (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com))
6 6
7 This file is part of BFD, the Binary File Descriptor library. 7 This file is part of BFD, the Binary File Descriptor library.
8 8
9 This program is free software; you can redistribute it and/or modify 9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by 10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or 11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version. 12 (at your option) any later version.
(...skipping 17 matching lines...) Expand all
30 #include "elf/m68hc11.h" 30 #include "elf/m68hc11.h"
31 #include "opcode/m68hc11.h" 31 #include "opcode/m68hc11.h"
32 32
33 /* Relocation functions. */ 33 /* Relocation functions. */
34 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup 34 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
35 (bfd *, bfd_reloc_code_real_type); 35 (bfd *, bfd_reloc_code_real_type);
36 static void m68hc11_info_to_howto_rel 36 static void m68hc11_info_to_howto_rel
37 (bfd *, arelent *, Elf_Internal_Rela *); 37 (bfd *, arelent *, Elf_Internal_Rela *);
38 38
39 /* Trampoline generation. */ 39 /* Trampoline generation. */
40 static bfd_boolean m68hc12_elf_size_one_stub
41 (struct bfd_hash_entry *gen_entry, void *in_arg);
42 static bfd_boolean m68hc12_elf_build_one_stub
43 (struct bfd_hash_entry *gen_entry, void *in_arg);
44 static struct bfd_link_hash_table* m68hc12_elf_bfd_link_hash_table_create
45 (bfd*);
46 40
47 static bfd_boolean m68hc12_elf_set_mach_from_flags PARAMS ((bfd *));
48 41
49 /* Use REL instead of RELA to save space */ 42 /* Use REL instead of RELA to save space */
50 #define USE_REL 1 43 #define USE_REL 1
51 44
52 /* The 68HC12 microcontroler has a memory bank switching system 45 /* The 68HC12 microcontroler has a memory bank switching system
53 with a 16Kb window in the 64Kb address space. The extended memory 46 with a 16Kb window in the 64Kb address space. The extended memory
54 is mapped in the 16Kb window (at 0x8000). The page register controls 47 is mapped in the 16Kb window (at 0x8000). The page register controls
55 which 16Kb bank is mapped. The call/rtc instructions take care of 48 which 16Kb bank is mapped. The call/rtc instructions take care of
56 bank switching in function calls/returns. 49 bank switching in function calls/returns.
57 50
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 0, /* bitpos */ 310 0, /* bitpos */
318 complain_overflow_dont, /* complain_on_overflow */ 311 complain_overflow_dont, /* complain_on_overflow */
319 m68hc11_elf_special_reloc,/* special_function */ 312 m68hc11_elf_special_reloc,/* special_function */
320 "R_M68HC12_PAGE", /* name */ 313 "R_M68HC12_PAGE", /* name */
321 FALSE, /* partial_inplace */ 314 FALSE, /* partial_inplace */
322 0x00ff, /* src_mask */ 315 0x00ff, /* src_mask */
323 0x00ff, /* dst_mask */ 316 0x00ff, /* dst_mask */
324 FALSE), /* pcrel_offset */ 317 FALSE), /* pcrel_offset */
325 318
326 EMPTY_HOWTO (14), 319 EMPTY_HOWTO (14),
327 EMPTY_HOWTO (15), 320
328 EMPTY_HOWTO (16), 321 /* A 16 bit absolute relocation. */
329 EMPTY_HOWTO (17), 322 HOWTO (R_M68HC12_16B,»» /* type */
330 EMPTY_HOWTO (18), 323 » 0,» » » /* rightshift */
331 EMPTY_HOWTO (19), 324 » 1,» » » /* size (0 = byte, 1 = short, 2 = long) */
325 » 16,» » » /* bitsize */
326 » FALSE,»» » /* pc_relative */
327 » 0,» » » /* bitpos */
328 » complain_overflow_bitfield,» /* complain_on_overflow */
329 » bfd_elf_generic_reloc,»/* special_function */
330 » "R_M68HC12_16B",» /* name */
331 » FALSE,»» » /* partial_inplace */
332 » 0xffff,» » » /* src_mask */
333 » 0xffff,» » » /* dst_mask */
334 » FALSE),» » /* pcrel_offset */
335
336 /* A 9 bit PC-rel relocation. */
337 HOWTO (R_M68HC12_PCREL_9,» /* type */
338 » 1,» » » /* rightshift */
339 » 1,» » » /* size (0 = byte, 1 = short, 2 = long) */
340 » 10,» » » /* bitsize (result is >>1) */
341 » TRUE,» » » /* pc_relative */
342 » 0,» » » /* bitpos */
343 » complain_overflow_dont,» /* complain_on_overflow */
344 » bfd_elf_generic_reloc,»/* special_function */
345 » "R_M68HC12_PCREL_9",» /* name */
346 » TRUE,» » » /* partial_inplace */
347 » 0xfe00,» » /* src_mask */
348 » 0x01ff,» » /* dst_mask */
349 » TRUE), /* pcrel_offset */
350
351 /* A 10 bit PC-rel relocation. */
352 HOWTO (R_M68HC12_PCREL_10,» /* type */
353 » 1,» » » /* rightshift */
354 » 1,» » » /* size (0 = byte, 1 = short, 2 = long) */
355 » 11,» » » /* bitsize (result is >>1) */
356 » TRUE,» » » /* pc_relative */
357 » 0,» » » /* bitpos */
358 » complain_overflow_dont,» /* complain_on_overflow */
359 » bfd_elf_generic_reloc,»/* special_function */
360 » "R_M68HC12_PCREL_10",» /* name */
361 » TRUE,» » » /* partial_inplace */
362 » 0xfc00,» » /* src_mask */
363 » 0x03ff,» » /* dst_mask */
364 » TRUE), /* pcrel_offset */
365
366 /* A 8 bit absolute relocation (upper address). */
367 HOWTO (R_M68HC12_HI8XG,» » /* type */
368 » 8,» » » /* rightshift */
369 » 0,» » » /* size (0 = byte, 1 = short, 2 = long) */
370 » 8,» » » /* bitsize */
371 » FALSE,»» » /* pc_relative */
372 » 0,» » » /* bitpos */
373 » complain_overflow_bitfield,» /* complain_on_overflow */
374 » bfd_elf_generic_reloc,»/* special_function */
375 » "R_M68HC12_HI8XG",» /* name */
376 » FALSE,»» » /* partial_inplace */
377 » 0x00ff,» » /* src_mask */
378 » 0x00ff,» » /* dst_mask */
379 » FALSE),» » /* pcrel_offset */
380
381 /* A 8 bit absolute relocation (lower address). */
382 HOWTO (R_M68HC12_LO8XG,» » /* type */
383 » 8,» » » /* rightshift */
384 » 0,» » » /* size (0 = byte, 1 = short, 2 = long) */
385 » 8,» » » /* bitsize */
386 » FALSE,»» » /* pc_relative */
387 » 0,» » » /* bitpos */
388 » complain_overflow_bitfield,» /* complain_on_overflow */
389 » bfd_elf_generic_reloc,»/* special_function */
390 » "R_M68HC12_LO8XG",» /* name */
391 » FALSE,»» » /* partial_inplace */
392 » 0x00ff,» » /* src_mask */
393 » 0x00ff,» » /* dst_mask */
394 » FALSE),» » /* pcrel_offset */
332 395
333 /* Mark beginning of a jump instruction (any form). */ 396 /* Mark beginning of a jump instruction (any form). */
334 HOWTO (R_M68HC11_RL_JUMP, /* type */ 397 HOWTO (R_M68HC11_RL_JUMP, /* type */
335 0, /* rightshift */ 398 0, /* rightshift */
336 1, /* size (0 = byte, 1 = short, 2 = long) */ 399 1, /* size (0 = byte, 1 = short, 2 = long) */
337 0, /* bitsize */ 400 0, /* bitsize */
338 FALSE, /* pc_relative */ 401 FALSE, /* pc_relative */
339 0, /* bitpos */ 402 0, /* bitpos */
340 complain_overflow_dont, /* complain_on_overflow */ 403 complain_overflow_dont, /* complain_on_overflow */
341 m68hc11_elf_ignore_reloc, /* special_function */ 404 m68hc11_elf_ignore_reloc, /* special_function */
(...skipping 20 matching lines...) Expand all
362 }; 425 };
363 426
364 /* Map BFD reloc types to M68HC11 ELF reloc types. */ 427 /* Map BFD reloc types to M68HC11 ELF reloc types. */
365 428
366 struct m68hc11_reloc_map 429 struct m68hc11_reloc_map
367 { 430 {
368 bfd_reloc_code_real_type bfd_reloc_val; 431 bfd_reloc_code_real_type bfd_reloc_val;
369 unsigned char elf_reloc_val; 432 unsigned char elf_reloc_val;
370 }; 433 };
371 434
372 static const struct m68hc11_reloc_map m68hc11_reloc_map[] = { 435 static const struct m68hc11_reloc_map m68hc11_reloc_map[] =
436 {
373 {BFD_RELOC_NONE, R_M68HC11_NONE,}, 437 {BFD_RELOC_NONE, R_M68HC11_NONE,},
374 {BFD_RELOC_8, R_M68HC11_8}, 438 {BFD_RELOC_8, R_M68HC11_8},
375 {BFD_RELOC_M68HC11_HI8, R_M68HC11_HI8}, 439 {BFD_RELOC_M68HC11_HI8, R_M68HC11_HI8},
376 {BFD_RELOC_M68HC11_LO8, R_M68HC11_LO8}, 440 {BFD_RELOC_M68HC11_LO8, R_M68HC11_LO8},
377 {BFD_RELOC_8_PCREL, R_M68HC11_PCREL_8}, 441 {BFD_RELOC_8_PCREL, R_M68HC11_PCREL_8},
378 {BFD_RELOC_16_PCREL, R_M68HC11_PCREL_16}, 442 {BFD_RELOC_16_PCREL, R_M68HC11_PCREL_16},
379 {BFD_RELOC_16, R_M68HC11_16}, 443 {BFD_RELOC_16, R_M68HC11_16},
380 {BFD_RELOC_32, R_M68HC11_32}, 444 {BFD_RELOC_32, R_M68HC11_32},
381 {BFD_RELOC_M68HC11_3B, R_M68HC11_3B}, 445 {BFD_RELOC_M68HC11_3B, R_M68HC11_3B},
382 446
383 {BFD_RELOC_VTABLE_INHERIT, R_M68HC11_GNU_VTINHERIT}, 447 {BFD_RELOC_VTABLE_INHERIT, R_M68HC11_GNU_VTINHERIT},
384 {BFD_RELOC_VTABLE_ENTRY, R_M68HC11_GNU_VTENTRY}, 448 {BFD_RELOC_VTABLE_ENTRY, R_M68HC11_GNU_VTENTRY},
385 449
386 {BFD_RELOC_M68HC11_LO16, R_M68HC11_LO16}, 450 {BFD_RELOC_M68HC11_LO16, R_M68HC11_LO16},
387 {BFD_RELOC_M68HC11_PAGE, R_M68HC11_PAGE}, 451 {BFD_RELOC_M68HC11_PAGE, R_M68HC11_PAGE},
388 {BFD_RELOC_M68HC11_24, R_M68HC11_24}, 452 {BFD_RELOC_M68HC11_24, R_M68HC11_24},
389 453
390 {BFD_RELOC_M68HC11_RL_JUMP, R_M68HC11_RL_JUMP}, 454 {BFD_RELOC_M68HC11_RL_JUMP, R_M68HC11_RL_JUMP},
391 {BFD_RELOC_M68HC11_RL_GROUP, R_M68HC11_RL_GROUP}, 455 {BFD_RELOC_M68HC11_RL_GROUP, R_M68HC11_RL_GROUP},
456
457 {BFD_RELOC_M68HC12_16B, R_M68HC12_16B},
458
459 {BFD_RELOC_M68HC12_9_PCREL, R_M68HC12_PCREL_9},
460 {BFD_RELOC_M68HC12_10_PCREL, R_M68HC12_PCREL_10},
461 {BFD_RELOC_M68HC12_HI8XG, R_M68HC12_HI8XG},
462 {BFD_RELOC_M68HC12_LO8XG, R_M68HC12_LO8XG},
392 }; 463 };
393 464
394 static reloc_howto_type * 465 static reloc_howto_type *
395 bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, 466 bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
396 bfd_reloc_code_real_type code) 467 bfd_reloc_code_real_type code)
397 { 468 {
398 unsigned int i; 469 unsigned int i;
399 470
400 for (i = 0; 471 for (i = 0;
401 i < sizeof (m68hc11_reloc_map) / sizeof (struct m68hc11_reloc_map); 472 i < sizeof (m68hc11_reloc_map) / sizeof (struct m68hc11_reloc_map);
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 #define ELF_MACHINE_CODE EM_68HC12 642 #define ELF_MACHINE_CODE EM_68HC12
572 #define ELF_MAXPAGESIZE 0x1000 643 #define ELF_MAXPAGESIZE 0x1000
573 644
574 #define TARGET_BIG_SYM bfd_elf32_m68hc12_vec 645 #define TARGET_BIG_SYM bfd_elf32_m68hc12_vec
575 #define TARGET_BIG_NAME "elf32-m68hc12" 646 #define TARGET_BIG_NAME "elf32-m68hc12"
576 647
577 #define elf_info_to_howto 0 648 #define elf_info_to_howto 0
578 #define elf_info_to_howto_rel m68hc11_info_to_howto_rel 649 #define elf_info_to_howto_rel m68hc11_info_to_howto_rel
579 #define elf_backend_check_relocs elf32_m68hc11_check_relocs 650 #define elf_backend_check_relocs elf32_m68hc11_check_relocs
580 #define elf_backend_relocate_section elf32_m68hc11_relocate_section 651 #define elf_backend_relocate_section elf32_m68hc11_relocate_section

error: old chunk mismatch

OLDNEW
« no previous file with comments | « bfd/elf32-m68hc11.c ('k') | bfd/elf32-m68hc1x.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698