home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / gnu / gdb-4.12-diffs.lha / src / diffs / gdb-4.12.diffs < prev   
Text File  |  1994-07-12  |  95KB  |  2,542 lines

  1. diff -rc --new-file /src/baseline/gdb-4.12/Product-Info gdb-4.12/Product-Info
  2. *** /src/baseline/gdb-4.12/Product-Info    Thu Jan  1 00:00:00 1970
  3. --- gdb-4.12/Product-Info    Tue Jul 12 17:16:37 1994
  4. ***************
  5. *** 0 ****
  6. --- 1,33 ----
  7. + .name
  8. + gdb
  9. + .fullname
  10. + GNU debugger
  11. + .type
  12. + Programmer Tool
  13. + .short
  14. + GNU debugger (incomplete port)
  15. + .description
  16. + The purpose of a debugger such as GDB is to allow you to see what is
  17. + going on "inside" another program while it executes, or what another
  18. + program was doing at the moment it crashed.
  19. + GDB can do four main kinds of things (plus other things in support of
  20. + these) to help you catch bugs in the act: (1) start your program,
  21. + specifying anything that might affect its behavior, (2) make your
  22. + program stop on specified conditions, (3) examine what has happened,
  23. + when your program has stopped, (4) change things in your program, so
  24. + you can experiment with correcting the effects of one bug and go on to
  25. + learn about another.
  26. + You can use GDB to debug programs written in C, C++, and Modula-2.
  27. + Fortran support will be added when a GNU Fortran compiler is ready.
  28. + .version
  29. + 4.12
  30. + .author
  31. + Free Software Foundation
  32. + .requirements
  33. + Amiga binary requires ixemul.library.
  34. + .distribution
  35. + GNU Public License
  36. + .described-by
  37. + Fred Fish (fnf@amigalib.com)
  38. diff -rc --new-file /src/baseline/gdb-4.12/bfd/Makefile.in gdb-4.12/bfd/Makefile.in
  39. *** /src/baseline/gdb-4.12/bfd/Makefile.in    Thu Feb  3 12:46:35 1994
  40. --- gdb-4.12/bfd/Makefile.in    Fri Jun 17 07:33:34 1994
  41. ***************
  42. *** 113,118 ****
  43. --- 113,119 ----
  44.   BFD32_BACKENDS = \
  45.       aout-adobe.o \
  46.       aout32.o \
  47. +     amiga.o \
  48.       bout.o \
  49.       cf-i386lynx.o \
  50.       cf-m68klynx.o \
  51. ***************
  52. *** 232,238 ****
  53.        hp300bsd.c hp300hpux.c \
  54.        i386lynx.c cf-i386lynx.c m68klynx.c cf-m68klynx.c \
  55.        sparclynx.c cf-sparclynx.c aix386-core.c hpux-core.c \
  56. !      irix-core.c lynx-core.c osf-core.c hash.c linker.c
  57.   
  58.   HFILES = aout-target.h aoutf1.h aoutx.h coffcode.h \
  59.        coffswap.h ecoffswap.h elf32-hppa.h elf32-target.h elf64-target.h \
  60. --- 233,239 ----
  61.        hp300bsd.c hp300hpux.c \
  62.        i386lynx.c cf-i386lynx.c m68klynx.c cf-m68klynx.c \
  63.        sparclynx.c cf-sparclynx.c aix386-core.c hpux-core.c \
  64. !      irix-core.c lynx-core.c osf-core.c hash.c linker.c amiga.c
  65.   
  66.   HFILES = aout-target.h aoutf1.h aoutx.h coffcode.h \
  67.        coffswap.h ecoffswap.h elf32-hppa.h elf32-target.h elf64-target.h \
  68. ***************
  69. *** 492,497 ****
  70. --- 493,500 ----
  71.   
  72.   bfd.ps: 
  73.       (cd $(docdir); $(MAKE) bfd.ps $(FLAGS_TO_PASS))
  74. + amiga.o: amiga.c libamiga.h bfd.h
  75.   
  76.   # What appears below is generated by a hacked mkdep using gcc -MM.
  77.   
  78. diff -rc --new-file /src/baseline/gdb-4.12/bfd/amiga.c gdb-4.12/bfd/amiga.c
  79. *** /src/baseline/gdb-4.12/bfd/amiga.c    Thu Jan  1 00:00:00 1970
  80. --- gdb-4.12/bfd/amiga.c    Fri Jun 17 07:33:35 1994
  81. ***************
  82. *** 0 ****
  83. --- 1,1019 ----
  84. + /* BFD back-end for Commodore-Amiga AmigaDOS binaries.
  85. +    Copyright (C) 1990-1994 Free Software Foundation, Inc.
  86. +    Contributed by Leonard Norrgard.  Partially based on the bout
  87. +    and ieee BFD backends and Markus Wild's tool hunk2gcc.
  88. + This file is part of BFD, the Binary File Descriptor library.
  89. + This program is free software; you can redistribute it and/or modify
  90. + it under the terms of the GNU General Public License as published by
  91. + the Free Software Foundation; either version 2 of the License, or
  92. + (at your option) any later version.
  93. + This program is distributed in the hope that it will be useful,
  94. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  95. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  96. + GNU General Public License for more details.
  97. + You should have received a copy of the GNU General Public License
  98. + along with this program; if not, write to the Free Software
  99. + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  100. + /* TODO:
  101. +    - writing of object files
  102. +    - .chipdata, .chipbss
  103. +    - fix fixme:s
  104. +    BFD:
  105. +    - add flag to say if the format allows multiple sections with the
  106. +      same name.  Fix bfd_get_section_by_name() and bfd_make_section()
  107. +      accordingly.
  108. +    - dumpobj.c: the disassembler: use relocation record data to find symbolic
  109. +      names of addresses, when available.  Needs new routine where one can
  110. +      specify the source section of the symbol to be printed as well as some
  111. +      rewrite of the disassemble functions.
  112. +    */
  113. + #include "bfd.h"
  114. + #include "sysdep.h"
  115. + #include "libbfd.h"
  116. + #include "libamiga.h"
  117. + #define GL(x) bfd_get_32 (abfd, (bfd_byte *) (x))
  118. + #define DEBUG_AMIGA 0
  119. + static boolean amiga_digest_file ();
  120. + static boolean amiga_mkobject ();
  121. + reloc_howto_type howto_hunk_reloc8 =
  122. + {
  123. +   HUNK_RELOC8, /* type */
  124. +   0,           /* rightshift */
  125. +   0,           /* size */
  126. +   0,           /* bitsize */
  127. +   true,        /* pc_relative */
  128. +   0,           /* bitpos */
  129. +   complain_overflow_bitfield,  /* complain_on_overflow */
  130. +   0,           /* special_function */
  131. +   "reloc8",    /* textual name */
  132. +   false,       /* partial_inplace? */
  133. +   0x000000ff,  /* src_mask */
  134. +   0x000000ff,  /* dst_mask */
  135. +   true         /* pcrel_offset */
  136. + };
  137. + reloc_howto_type howto_hunk_reloc16 =
  138. + {HUNK_RELOC16,0,0,0,true,0,complain_overflow_bitfield,0,"reloc16",false,0x0000ffff,0x0000ffff,true};
  139. + reloc_howto_type howto_hunk_reloc32 =
  140. + {HUNK_RELOC32,0,0,0,true,0,complain_overflow_bitfield,0,"reloc32",false,0xffffffff,0xffffffff,true};
  141. + reloc_howto_type howto_hunk_drel8 =
  142. + {HUNK_DREL8,0,0,0,false,0,complain_overflow_bitfield,0,"drel8",false,0x000000ff,0x000000ff,true};
  143. + reloc_howto_type howto_hunk_drel16 =
  144. + {HUNK_DREL16,0,0,0,false,0,complain_overflow_bitfield,0,"drel16",false,0x0000ffff,0x0000ffff,true};
  145. + reloc_howto_type howto_hunk_drel32 =
  146. + {HUNK_DREL32,0,0,0,false,0,complain_overflow_bitfield,0,"drel32",false,0xffffffff,0xffffffff,true};
  147. + reloc_howto_type *amiga_howto_array[2][3] =
  148. + {
  149. +   { &howto_hunk_reloc8, &howto_hunk_reloc16, &howto_hunk_reloc32 },
  150. +   { &howto_hunk_drel8, &howto_hunk_drel16, &howto_hunk_drel32 }
  151. + };
  152. + static bfd_target *
  153. + amiga_object_p (abfd)
  154. +      bfd *abfd;
  155. + {
  156. +   char buf[8];
  157. +   unsigned int x;
  158. +   struct stat stat_buffer;
  159. +   /* An Amiga object file must be at least 8 bytes long.  */
  160. +   if (bfd_read ((PTR) buf, 1, 8, abfd) != 8)
  161. +     {
  162. +       bfd_error = wrong_format;
  163. +       return 0;
  164. +     }
  165. +   /* Does it look like an Amiga object file?  */
  166. +   x = GL(buf);
  167. +   if ((x != HUNK_UNIT) && (x != HUNK_HEADER))
  168. +     {
  169. +       /* Not an Amiga file.  */
  170. +       bfd_error = wrong_format;
  171. +       return 0;
  172. +     }
  173. +   /* So far it seems to be an Amiga file.  Now slurp it
  174. +      in and examine it closer.  */
  175. +   if (-1 == fstat (fileno ((FILE *) abfd->iostream), &stat_buffer))
  176. +     {
  177. +       bfd_error = system_call_error;
  178. +       return 0;
  179. +     }
  180. +   /* Can't fail and return (but must be declared boolean to suit
  181. +      other bfd requirements).  */
  182. +   (void) amiga_mkobject (abfd);
  183. +   AMIGA_DATA(abfd)->symbol_tail_ptr = &AMIGA_DATA(abfd)->external_symbols;
  184. +   
  185. +   AMIGA_DATA(abfd)->first_byte = (unsigned long *) bfd_alloc (abfd, stat_buffer.st_size);
  186. +   bfd_seek (abfd, 0, SEEK_SET);
  187. +   bfd_read (AMIGA_DATA(abfd)->first_byte, 1, stat_buffer.st_size, abfd);
  188. +   AMIGA_DATA(abfd)->file_pointer = AMIGA_DATA(abfd)->first_byte;
  189. +   AMIGA_DATA(abfd)->file_end = (unsigned long *)((unsigned char *)AMIGA_DATA(abfd)->first_byte + stat_buffer.st_size);
  190. +   if (!amiga_digest_file (abfd))
  191. +     {
  192. +       /* Something went wrong.  */
  193. +       return (struct bfd_target *) 0;
  194. +     }
  195. +   /* Set default architecture to m68k:68020.  */
  196. +   abfd->arch_info = bfd_scan_arch ("m68k:68020");
  197. +   return abfd->xvec;
  198. + }
  199. + /* Skip over the hunk length longword + the number of longwords given there.  */
  200. + #define next_hunk(abfd) \
  201. +   { AMIGA_DATA(abfd)->file_pointer += 1 + GL(AMIGA_DATA(abfd)->file_pointer); }
  202. + static asection *
  203. + amiga_get_section_by_hunk_number (abfd, hunk_number)
  204. +      bfd *abfd;
  205. +      unsigned int hunk_number;
  206. + {
  207. +   /* A cache, so we don't have to search the entire list every time.  */
  208. +   static asection *last_reference;
  209. +   asection *p;
  210. +   if (last_reference)
  211. +     if (last_reference->target_index == hunk_number)
  212. +       return last_reference;
  213. +   for (p = abfd->sections; p != NULL; p = p->next)
  214. +     if (p->target_index == hunk_number)
  215. +       {
  216. +     last_reference = p;
  217. +     return p;
  218. +       }
  219. +   BFD_FAIL();
  220. +   return (asection *) 0;
  221. + }
  222. + /* Remember about a symbol found at the current file position.
  223. +    Return number of longwords to advance the file_pointer with.  */
  224. + static unsigned long
  225. + amiga_add_symbol (abfd, hunk_number)
  226. +      bfd *abfd;
  227. +      unsigned int hunk_number;
  228. + {
  229. +   int length;
  230. +   amiga_symbol_type *symbol = bfd_alloc (abfd, sizeof (amiga_symbol_type));
  231. +   if (symbol)
  232. +     {
  233. +       amiga_data_type *amiga_data = AMIGA_DATA(abfd);
  234. +       unsigned long *file_pointer = amiga_data->file_pointer;
  235. +       unsigned char type = GL(file_pointer) >> 24;
  236. +       ++abfd->symcount;
  237. +       *amiga_data->symbol_tail_ptr = symbol;
  238. +       amiga_data->symbol_tail_ptr = &symbol->next;
  239. +       symbol->symbol.the_bfd = abfd;
  240. +       /* The symbol name is not necessarily nul-terminated in the file.
  241. +      So, we move it to start on the length word and put a NUL at the
  242. +      end of it all.  This way, we avoid allocating separate memory for
  243. +      the symbol name, while assuring that the name is nul-terminated.  */
  244. +       length = (GL(file_pointer) & 0xffffff) << 2;
  245. +       strncpy ((char *) file_pointer, (char *) (file_pointer + 1), length);
  246. +       *(((char *)file_pointer) + length) = '\0';
  247. +       symbol->symbol.name = (char *)file_pointer;
  248. +       symbol->symbol.udata = (PTR) NULL;
  249. +       symbol->symbol.flags = ((type == EXT_DEF) || (type == EXT_ABS))
  250. +                  ? BSF_GLOBAL : BSF_NO_FLAGS;
  251. +       symbol->symbol.value = ((type == EXT_DEF) || (type == EXT_ABS))
  252. +                  ? (symvalue) GL(file_pointer + 1 + (length>>2)) : 0;
  253. +       symbol->symbol.section = amiga_get_section_by_hunk_number (abfd, hunk_number);
  254. +       symbol->hunk_number = hunk_number;
  255. +       symbol->type = type;
  256. +       symbol->next = 0;
  257. +     }
  258. +   return length >> 2;
  259. + }
  260. + static void
  261. + amiga_add_reloc (abfd, section, offset, symbol_number, howto, target_hunk)
  262. +      bfd *abfd;
  263. +      asection *section;
  264. +      bfd_size_type offset;
  265. +      int symbol_number;
  266. +      reloc_howto_type *howto;
  267. +      unsigned int target_hunk;
  268. + {
  269. +   amiga_reloc_type *reloc;
  270. +   reloc = (amiga_reloc_type *) bfd_alloc (abfd, sizeof (amiga_reloc_type));
  271. +   reloc->next = 0;
  272. +   abfd -> flags |= HAS_RELOC;
  273. +   section -> flags |= SEC_RELOC;
  274. +   ++section->reloc_count;
  275. +   if (amiga_per_section(section)->reloc_tail_ptr)
  276. +     amiga_per_section(section)->reloc_tail_ptr->next = reloc;
  277. +   else
  278. +     section->relocation = (struct reloc_cache_entry *) reloc;
  279. +   amiga_per_section(section)->reloc_tail_ptr = reloc;
  280. +   amiga_per_section(section)->reloc_tail_ptr->next = (amiga_reloc_type *) 0;
  281. +   reloc->relent.address = offset;
  282. +   reloc->relent.addend = 0;
  283. +   reloc->relent.howto = howto;
  284. +   reloc->symbol_number = symbol_number;
  285. +   reloc->target_hunk = target_hunk;
  286. + }
  287. + /* BFD doesn't currently allow multiple sections with the same
  288. +    name, so we try a little harder to get a unique name.  */
  289. + asection *
  290. + amiga_make_unique_section (abfd, name)
  291. +      bfd *abfd;
  292. +      CONST char *name;
  293. + {
  294. +   asection *section;
  295. +   section = bfd_make_section (abfd, name);
  296. +   if (!section)
  297. +     {
  298. +       int i = 1;
  299. +       char *new_name;
  300. +       new_name = bfd_alloc (abfd, strlen(name) + 3);
  301. +       /* We try to come up with an original name (since BFD
  302. +      currently requires all sections to have different names).  */
  303. +       while (!section && (i<=99))
  304. +     {
  305. +       sprintf (new_name, "%s_%u", name, i);
  306. +       section = bfd_make_section (abfd, new_name);
  307. +     }
  308. +       if (!section)
  309. +     {
  310. +       /* Complain about the given name.  */
  311. +       bfd_error = bad_value;
  312. +       return 0;
  313. +     }
  314. +     }
  315. +   return section;
  316. + }
  317. + static boolean
  318. + amiga_digest_file (abfd)
  319. +      bfd *abfd;
  320. + {
  321. +   int is_chip;
  322. +   int units = 0;
  323. +   int hunk_number;
  324. +   char *current_name = 0;
  325. +   asection *current_section;
  326. +   amiga_data_type *amiga_data = AMIGA_DATA(abfd);
  327. +   int hunk_type;
  328. +   /* Hunk numbers starts with 0, but we pre-increment the hunk_number when
  329. +      we assign a new one, so this really makes the first hunk number 0.  */
  330. +   hunk_number = -1;
  331. +   while (units < 2)
  332. +     {
  333. +       hunk_type = HUNK_VALUE(GL(amiga_data->file_pointer++));
  334. + #if DEBUG_AMIGA
  335. +       printf ("Processing %s hunk...",
  336. +           hunk_type == HUNK_UNIT ? "HUNK_UNIT" :
  337. +           hunk_type == HUNK_NAME ? "HUNK_NAME" :
  338. +           hunk_type == HUNK_DEBUG ? "HUNK_DEBUG" :
  339. +           hunk_type == HUNK_OVERLAY ? "HUNK_OVERLAY" :
  340. +           hunk_type == HUNK_BREAK ? "HUNK_BREAK" :
  341. +           hunk_type == HUNK_HEADER ? "HUNK_HEADER" :
  342. +           hunk_type == HUNK_CODE ? "HUNK_CODE" :
  343. +           hunk_type == HUNK_DATA ? "HUNK_DATA" :
  344. +           hunk_type == HUNK_BSS ? "HUNK_BSS" :
  345. +           hunk_type == HUNK_RELOC8 ? "HUNK_RELOC8" :
  346. +           hunk_type == HUNK_RELOC16 ? "HUNK_RELOC16" :
  347. +           hunk_type == HUNK_RELOC32 ? "HUNK_RELOC32" :
  348. +           hunk_type == HUNK_DREL8 ? "HUNK_DREL8" :
  349. +           hunk_type == HUNK_DREL16 ? "HUNK_DREL16" :
  350. +           hunk_type == HUNK_DREL32 ? "HUNK_DREL32" :
  351. +           hunk_type == HUNK_SYMBOL ? "HUNK_SYMBOL" :
  352. +           hunk_type == HUNK_EXT ? "HUNK_EXT" :
  353. +           hunk_type == HUNK_END ? "HUNK_END" :
  354. +           hunk_type == HUNK_LIB ? "HUNK_LIB" :
  355. +           hunk_type == HUNK_INDEX ? "HUNK_INDEX" :
  356. +           "*unknown*");
  357. + #endif
  358. +       switch (hunk_type)
  359. +     {
  360. +     case HUNK_UNIT:
  361. +       current_name =
  362. +         (GL(amiga_data->file_pointer) == 0)
  363. +           ? "" : (char *)(amiga_data->file_pointer + 1);
  364. +       /* Allow only one program unit per bfd.  */
  365. +       if (units++)
  366. +         break;
  367. +       /* We always initialize hunk_number to -1, as desribed above.  */
  368. +       hunk_number = -1;
  369. +       next_hunk (abfd);
  370. +       break;
  371. +     case HUNK_NAME:
  372. +       {
  373. +         int length = GL(amiga_data->file_pointer) << 2;
  374. +         /* Change the name to a nul-terminated string.  */
  375. +         strncpy ((char *)amiga_data->file_pointer, (char *)(amiga_data->file_pointer + 1), length);
  376. +         *(((char *) amiga_data->file_pointer) + length) = '\0';
  377. +         current_name = (char *) amiga_data->file_pointer;
  378. +         /* Can't use next_hunk() here, as we wrote over the hunk length
  379. +            that next_hunk() looks at.  */
  380. +         amiga_data->file_pointer += 1 + (length>>2);
  381. +       }
  382. +       break;
  383. +     case HUNK_DEBUG:
  384. +       /* The format for the HUNK_DEBUG, as produced by Amiga GNU C:
  385. +          longwords:
  386. +             |---------------|
  387. +             |  HUNK_DEBUG   |  0x3f1, Amigados imposed
  388. +         |---------------|
  389. +         |      N        |  Size of this hunk in longwords
  390. +         |---------------|
  391. +         | AMIGA_ZMAGIC  |  0413, same as BSD unix ZMAGIC
  392. +         |---------------|
  393. +         |  symtabsize   |  size of the symbol table in bytes
  394. +         |---------------|
  395. +         | stringtabsize |  size of the string table in bytes
  396. +         |---------------|
  397. +         | symtab data   |  symbol table in a.out format,
  398. +         :               :  size is symtabsize.
  399. +         :          .....:
  400. +         |..........|    |  
  401. +         |   stringtab   |  string table in a.out format,
  402. +         :     data      :  size is stringtabsize.
  403. +         :               :  (can start on byte boundary,
  404. +         |---------------|   and can be padded at the end).
  405. +       /* Same as BSD unix ZMAGIC, but I don't want to include
  406. +          any BSD files here.  */
  407. + #define    AMIGA_ZMAGIC 0413 
  408. +       /* Identifier for the GNU C format for HUNK_DEBUG on the Amiga.  */
  409. +       if (GL(amiga_data->file_pointer + 1) == AMIGA_ZMAGIC)
  410. +         {
  411. +           amiga_data->symtab_size = GL(amiga_data->file_pointer + 2);
  412. +           amiga_data->stringtab_size = GL(amiga_data->file_pointer + 3);
  413. +           adata(abfd).sym_filepos =
  414. +         (file_ptr) ((char *)(amiga_data->file_pointer + 4) - (char *)amiga_data->first_byte);
  415. +           adata(abfd).str_filepos = adata(abfd).sym_filepos
  416. +         + amiga_data->symtab_size;
  417. +         }
  418. +       else
  419. +         fprintf (stderr, "unknown debug hunk type\n");
  420. +       next_hunk (abfd);
  421. +       break;
  422. +     case HUNK_OVERLAY:
  423. +       /* Poor man's virtual memory.  Not yet supported.  */
  424. +       /* fixme */
  425. +       fprintf (stderr, "Warning: HUNK_OVERLAY encountered, ignoring.\n");
  426. +       next_hunk (abfd);
  427. +       break;
  428. +     case HUNK_BREAK:
  429. +       /* HUNK_BREAK indicates the end of an overlay node.  This
  430. +          hunk consists of a single longword, HUNK_BREAK.  As we
  431. +          do not yet support overlays, we ignore thins hunk for now.  */
  432. +       /* fixme */
  433. +       fprintf(stderr, "Warning: HUNK_BREAK encountered, ignoring.\n");
  434. +       next_hunk (abfd);
  435. +       break;
  436. +     case HUNK_HEADER:
  437. +       /* This is the header of a load file.
  438. +          
  439. +          Skip resident library names (never used, it's
  440. +          an obsolete feature of the file format).  fixme: verify that!  */
  441. +       while (GL(amiga_data->file_pointer))
  442. +         next_hunk (abfd);
  443. +       /* Skip null-word, table_size, F & L, and size-table.  */
  444. +       amiga_data->file_pointer += 4 + GL(amiga_data->file_pointer + 1) - GL(amiga_data->file_pointer + 2);
  445. +       break;
  446. +     case HUNK_CODE:
  447. +       is_chip = HUNK_ATTRIBUTE (GL(amiga_data->file_pointer - 1)) == HUNK_ATTR_CHIP;
  448. +       if (is_chip)
  449. +         fprintf (stderr, "Warning: CHIP code hunks are not supported, ignoring CHIP attribute\n");
  450. +       current_section = amiga_make_unique_section (abfd, (current_name && current_name[0]) ? current_name : ".text");
  451. +       if (current_section == 0)
  452. +         {
  453. +           /* Fatal error.  */
  454. +           return false;
  455. +         }
  456. +       current_section->filepos = (char *) (amiga_data->file_pointer + 1) - (char *)amiga_data->first_byte;
  457. +       current_section->_raw_size = GL(amiga_data->file_pointer) << 2;
  458. +       current_section->target_index = ++hunk_number;
  459. +       bfd_set_section_flags (abfd, current_section, SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
  460. +       next_hunk (abfd);
  461. +       break;
  462. +     case HUNK_DATA:
  463. +       current_section = amiga_make_unique_section (abfd, (current_name && current_name[0]) ? current_name : ".data");
  464. +       if (current_section == 0)
  465. +         {
  466. +           /* Fatal error.  */
  467. +           return false;
  468. +         }
  469. +       current_section->filepos = (char *) (amiga_data->file_pointer + 1) - (char *)amiga_data->first_byte;
  470. +       current_section->_raw_size = GL(amiga_data->file_pointer) << 2;
  471. +       current_section->target_index = ++hunk_number;
  472. +       bfd_set_section_flags (abfd, current_section, SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
  473. +       next_hunk (abfd);
  474. +       break;
  475. +     case HUNK_BSS:
  476. +       current_section = amiga_make_unique_section (abfd, (current_name && current_name[0]) ? current_name : ".bss");
  477. +       if (current_section == 0)
  478. +         {
  479. +           /* Fatal error.  */
  480. +           return false;
  481. +         }
  482. +       current_section->filepos = (file_ptr) -1;
  483. +       current_section->_raw_size = GL(amiga_data->file_pointer) << 2;
  484. +       current_section->target_index = ++hunk_number;
  485. +       bfd_set_section_flags (abfd, current_section, SEC_ALLOC);
  486. +       ++ amiga_data->file_pointer;
  487. +       break;
  488. +     case HUNK_RELOC8:
  489. +     case HUNK_RELOC16:
  490. +     case HUNK_RELOC32:
  491. +     case HUNK_DREL8:
  492. +     case HUNK_DREL16:
  493. +     case HUNK_DREL32:
  494. +       {
  495. +         int size, base_relative;
  496. +         reloc_howto_type *howto;
  497. +       
  498. +         base_relative = GL(&amiga_data->file_pointer[-1]) >= HUNK_DREL32;
  499. +         size = (base_relative ? HUNK_DREL8 : HUNK_RELOC8) - GL(&amiga_data->file_pointer[-1]);
  500. +         howto = amiga_howto_array[base_relative][size];
  501. +         while (GL(amiga_data->file_pointer))
  502. +           {
  503. +         long to_reloc = GL(amiga_data->file_pointer + 1);
  504. +         long n        = GL(amiga_data->file_pointer);
  505. +         long i = 1;
  506. +         
  507. +         while (i++ < n)
  508. +           amiga_add_reloc (abfd, current_section,
  509. +                    GL(amiga_data->file_pointer + i + 1),
  510. +                    -1, howto, to_reloc);
  511. +         amiga_data->file_pointer += GL(amiga_data->file_pointer) + 2;
  512. +           }
  513. +         ++amiga_data->file_pointer;
  514. +       }
  515. +       break;
  516. +     case HUNK_SYMBOL:
  517. +       /* "You use this block to attach a symbol table to a hunk so that
  518. +          you can use a symbolic debugger on the code.  The linker passes
  519. +          symbol table blocks through attached to the hunk and, if the hunks
  520. +          are coagulated, coagulates the symbol tables.  The loader does not
  521. +          load symbol table blocks into memory; when this is required,
  522. +          the debugger is expected to read the load file."
  523. +                                            -- The AmigaDOS Manual, 3rd ed.
  524. +          GNU C on the Amiga passes all needed debug information in the
  525. +          debug hunk (HUNK_DEBUG).  Thus we do not depend on HUNK_SYMBOL
  526. +          for the GNU debugger GDB to get symbol information and can safely
  527. +          ignore this hunk.
  528. +            If, however, someone would like to add full support for
  529. +          HUNK_SYMBOL to be able to use some debugger that doesn't
  530. +          understand the GNU C debug hunk, please go ahead.
  531. +            As of this writing, the BarFly debugger written by
  532. +          Ralph "laire" Schmidt is starting to understand the GNU C debug
  533. +          hunk.  As the GNU version of the debug hunk is publically
  534. +          documented, unlike for example the format used by SAS Insitute
  535. +          on the Amiga, I hope other debugger writers will follow his
  536. +          example.                          -- vinsci@nic.funet.fi   */
  537. +       /* The formats of the HUNK_SYMBOL and HUNK_EXT hunks are exactly
  538. +          the same, except the type byte of anything in the HUNK_SYMBOL
  539. +          is always zero.  Thus we ignore the symbol hunk by ignoring
  540. +          all EXT_SYMB's below and can thus reuse the code.  */
  541. +       /* Fall through */
  542. +     case HUNK_EXT:
  543. +       while (GL(amiga_data->file_pointer))
  544. +         {
  545. +           int num, size, base_relative;
  546. +           unsigned char type;
  547. +           reloc_howto_type *howto;
  548. +           /* Make sure we don't set this flag for HUNK_SYMBOL hunks.  */
  549. +           if (hunk_type == HUNK_EXT)
  550. +             abfd -> flags |= HAS_SYMS;
  551. +           
  552. +           switch (type = (GL(amiga_data->file_pointer) >> 24))
  553. +         {
  554. +         case EXT_SYMB:  /* This is a symbol from HUNK_SYMBOL, which we
  555. +                    ignore.  See long description above.  */
  556. +           num = GL(amiga_data->file_pointer) & 0xffffff;
  557. +           amiga_data->file_pointer += 2 + num;
  558. +           break;
  559. +         case EXT_DEF:   /* Relocatable definition.  */
  560. +         case EXT_ABS:   /* Absolute definition.  */
  561. +         /* case EXT_RES: obsolete; Resident library definition.  */
  562. +           num = amiga_add_symbol (abfd, hunk_number);
  563. +           amiga_data->file_pointer += 2 + num;
  564. +           break;
  565. +           
  566. +         case EXT_COMMON:  /* 32 bit reference to COMMON block.  */
  567. +           {
  568. +             int i = 0;
  569. +             num = amiga_add_symbol (abfd, hunk_number);
  570. +             amiga_data->file_pointer += 2 + num;
  571. +           
  572. +             num = GL(amiga_data->file_pointer);
  573. +             while (i++ < num)
  574. +               amiga_add_reloc
  575. +             (abfd, current_section, GL(amiga_data->file_pointer + i),
  576. +              amiga_data->a.n_symbols, &howto_hunk_drel32, -1);
  577. +             next_hunk (abfd);
  578. +           }
  579. +           break;
  580. +           
  581. +         case EXT_REF8:     /*  8 bit reference to symbol.  */
  582. +         case EXT_REF16:    /* 16 bit reference to symbol.  */
  583. +         case EXT_REF32:    /* 32 bit reference to symbol.  */
  584. +         case EXT_DEXT8:    /*  8 bit data relative reference.  */
  585. +         case EXT_DEXT16:   /* 16 bit data relative reference.  */
  586. +         case EXT_DEXT32:   /* 32 bit data relative reference.  */
  587. +           size = GL(amiga_data->file_pointer) >> 24;
  588. +           base_relative = size >= EXT_DEXT32;
  589. +           switch (size)
  590. +             {
  591. +             case EXT_REF32:
  592. +             case EXT_DEXT32:
  593. +               size = 2;
  594. +               break;
  595. +             case EXT_REF16:
  596. +             case EXT_DEXT16:
  597. +               size = 1;
  598. +               break;
  599. +             default:
  600. +               size = 0;
  601. +             }
  602. +           howto = amiga_howto_array[base_relative][size];
  603. +           
  604. +           num = amiga_add_symbol (abfd, hunk_number);
  605. +           
  606. +           amiga_data->file_pointer += 1 + num;
  607. +           {
  608. +             int i = 0;
  609. +             
  610. +             num = GL(amiga_data->file_pointer);
  611. +             while (i++ < num)
  612. +               amiga_add_reloc (abfd, current_section,
  613. +                        GL(amiga_data->file_pointer + i),
  614. +                        amiga_data->a.n_symbols, howto, -1);
  615. +           }
  616. +           next_hunk (abfd);
  617. +           break;
  618. +           
  619. +         default:
  620. +           fprintf (stderr, "Unknown symbol type %d, don't know how to handle.\n", type);
  621. +           /* Fatal error.  */
  622. +           return false;
  623. +         }
  624. +         }
  625. +       ++ amiga_data->file_pointer;
  626. +       break;
  627. +     case HUNK_END:
  628. +       break;
  629. +     case HUNK_LIB:
  630. +     case HUNK_INDEX:
  631. +       fprintf (stderr, "Can not handle HUNK_LIB and HUNK_INDEX hunks.\nConvert the library to ALINK (join) format.\n");
  632. +       break;
  633. +     default:
  634. +       fprintf (stderr, "Unknown hunk type $%x, unit offset = $%x.\n",
  635. +            GL(amiga_data->file_pointer -1),
  636. +            ((amiga_data->file_pointer - 1) - amiga_data->first_byte) * 4);
  637. +       /* Fatal error.  */
  638. +       return false;
  639. +     }
  640. + #if DEBUG_AMIGA
  641. +       printf ("...hunk processed.\n");
  642. + #endif
  643. +       if (amiga_data->file_pointer >= amiga_data->file_end)
  644. +     break;
  645. +     }
  646. +   /* OK.  */
  647. +   return true;
  648. + }
  649. + static boolean
  650. + amiga_mkobject (abfd)
  651. +      bfd *abfd;
  652. + {
  653. +   struct amiga_data_struct *rawptr;
  654. +   rawptr = (struct amiga_data_struct *) bfd_zalloc (abfd, sizeof (struct amiga_data_struct));
  655. +   abfd->tdata.amiga_data = rawptr;
  656. +   return true;
  657. + }
  658. + static boolean
  659. + amiga_write_object_contents (abfd)
  660. +      bfd *abfd;
  661. + {
  662. +   /* fixme */
  663. +   return true;
  664. + }
  665. + static boolean
  666. + amiga_get_section_contents (abfd, section, location, offset, count)
  667. +      bfd *abfd;
  668. +      sec_ptr section;
  669. +      PTR location;
  670. +      file_ptr offset;
  671. +      bfd_size_type count;
  672. + {
  673. +   memmove ((void *) location,
  674. +        (void *) (((int) AMIGA_DATA(abfd)->first_byte)
  675. +              + (int) section->filepos
  676. +              + (int) offset),
  677. +        count);
  678. +   return true;
  679. + }
  680. + boolean
  681. + amiga_new_section_hook (abfd, newsect)
  682. +      bfd *abfd;
  683. +      asection *newsect;
  684. + {
  685. +   newsect->used_by_bfd = (PTR) bfd_alloc (abfd, sizeof (amiga_per_section_type));
  686. +   newsect->alignment_power = 2;
  687. +   amiga_per_section(newsect)->reloc_tail_ptr = (amiga_reloc_type *) 0;
  688. +   return true;
  689. + }
  690. + void
  691. + amiga_slurp_symbol_table (abfd)
  692. +      bfd *abfd;
  693. + {
  694. +   /* fixme:  currently we always load the symbols at check_format time,
  695. +      so we don't do it here.  When the amiga backend someday doesn't
  696. +      keep more info than needed in memory, this will have to be fixed.  */
  697. + }
  698. + unsigned int
  699. + amiga_get_symtab_upper_bound (abfd)
  700. +      bfd *abfd;
  701. + {
  702. +   amiga_slurp_symbol_table (abfd);
  703. +   return (abfd->symcount != 0) ?
  704. +     (abfd->symcount+1) * (sizeof (amiga_symbol_type *)) : 0;
  705. + }
  706. + unsigned int
  707. + amiga_get_symtab (abfd, location)
  708. +      bfd *abfd;
  709. +      asymbol **location;
  710. + {
  711. +   amiga_symbol_type *symp;
  712. +   if (abfd->symcount)
  713. +     {
  714. +       int i = 0;
  715. +       amiga_slurp_symbol_table (abfd);
  716. +       for (symp = AMIGA_DATA(abfd)->external_symbols;
  717. +                  symp != (amiga_symbol_type *) NULL;
  718. +                  symp = symp->next)
  719. +     {
  720. +       location[i++] = &symp->symbol;
  721. +     }
  722. +       for (symp = AMIGA_DATA(abfd)->external_references;
  723. +                  symp != (amiga_symbol_type *) NULL;
  724. +                  symp = symp->next)
  725. +     {
  726. +       location[i++] = &symp->symbol;
  727. +     }
  728. +     }
  729. +   return abfd->symcount;
  730. + }
  731. + asymbol *
  732. + amiga_make_empty_symbol (abfd)
  733. +      bfd *abfd;
  734. + {
  735. +   amiga_symbol_type *new =
  736. +     (amiga_symbol_type *) bfd_zalloc (abfd, sizeof (amiga_symbol_type));
  737. +   new->symbol.the_bfd = abfd;
  738. +   return &new->symbol;
  739. + }
  740. + void 
  741. + amiga_get_symbol_info (ignore_abfd, symbol, ret)
  742. +       bfd *ignore_abfd;
  743. +       asymbol *symbol;
  744. +       symbol_info *ret;
  745. + {
  746. +   bfd_symbol_info (symbol, ret);
  747. +   if (symbol->name[0] == ' ')
  748. +     ret->name = "* empty table entry ";
  749. +   if (!symbol->section)
  750. +     ret->type = (symbol->flags & BSF_LOCAL) ? 'a' : 'A';
  751. + }
  752. + void 
  753. + amiga_print_symbol (ignore_abfd, afile,  symbol, how)
  754. +       bfd *ignore_abfd;
  755. +       PTR afile;
  756. +       asymbol *symbol;
  757. +       bfd_print_symbol_type how;
  758. + {
  759. +   FILE *file = (FILE *)afile;
  760. +   switch (how) {
  761. +   case bfd_print_symbol_name:
  762. +     fprintf(file, "%s", symbol->name);
  763. +     break;
  764. +   case bfd_print_symbol_more:
  765. +     /* fixme: adapt for amiga */
  766. +     BFD_FAIL();
  767. +     break;
  768. +   case bfd_print_symbol_all:
  769. +       {
  770. +     CONST char *section_name = (symbol->section == (asection *)NULL)
  771. +       ? (CONST char *)"*abs" : symbol->section->name;
  772. +     if (symbol->name[0] == ' ')
  773. +       {
  774. +         fprintf(file, "* empty table entry ");
  775. +       }
  776. +     else
  777. +       {
  778. +         bfd_print_symbol_vandf ((PTR)file, symbol);
  779. +         fprintf(file," %-5s %04x %02x %s",
  780. +             section_name,
  781. +             amiga_symbol(symbol)->hunk_number,  /* ->desc */
  782. +             (unsigned) 0,                       /* ->other */
  783. +                                                 /* type */
  784. +             symbol->name);                      /* ->name */
  785. +     }
  786. +       }
  787. +     break;
  788. +   }
  789. + }
  790. + static unsigned int
  791. + amiga_get_reloc_upper_bound (abfd, asect)
  792. +      bfd *abfd;
  793. +      sec_ptr asect;
  794. + {
  795. +   if (bfd_get_format (abfd) != bfd_object)
  796. +     {
  797. +       bfd_error = invalid_operation;
  798. +       return 0;
  799. +     }
  800. +   return sizeof (arelent *) * (asect->reloc_count + 1);
  801. + }
  802. + unsigned int
  803. + amiga_canonicalize_reloc (abfd, section, relptr, symbols)
  804. +      bfd *abfd;
  805. +      sec_ptr section;
  806. +      arelent **relptr;
  807. +      asymbol **symbols;
  808. + {
  809. +   amiga_reloc_type *src = (amiga_reloc_type *) section->relocation;
  810. +   int i = 0;
  811. +   while (src != (amiga_reloc_type *) 0)
  812. +     {
  813. +       if (src->symbol_number == -1)
  814. +         src->relent.sym_ptr_ptr =
  815. +       &(amiga_get_section_by_hunk_number(abfd,src->target_hunk))->symbol;
  816. +       else
  817. +     src->relent.sym_ptr_ptr = symbols + i++;
  818. +       *relptr++ = &src->relent;
  819. +       src = src->next;
  820. +     }
  821. +   *relptr = (arelent *) 0;
  822. +   return section->reloc_count;
  823. + }
  824. + static boolean
  825. + amiga_set_section_contents (abfd, section, location, offset, count)
  826. +      bfd *abfd;
  827. +      sec_ptr section;
  828. +      unsigned char *location;
  829. +      file_ptr offset;
  830. +       int count;
  831. + {
  832. +   /* fixme */
  833. +   return true;
  834. + }
  835. + static boolean
  836. + amiga_set_arch_mach (abfd, arch, machine)
  837. +      bfd *abfd;
  838. +      enum bfd_architecture arch;
  839. +      unsigned long machine;
  840. + {
  841. +   bfd_default_set_arch_mach(abfd, arch, machine);
  842. +   if (arch == bfd_arch_m68k)
  843. +     {
  844. +       switch (machine)
  845. +     {
  846. +     case 68000:
  847. +     case 68008:
  848. +     case 68010:
  849. +     case 68020:
  850. +     case 68030:
  851. +     case 68040:
  852. +     case 68070:
  853. +     case 0:
  854. +       return true;
  855. +     default:
  856. +       return false;
  857. +     }
  858. +     }
  859. +   return false;
  860. + }
  861. + static int 
  862. + DEFUN(amiga_sizeof_headers,(ignore_abfd, ignore),
  863. +       bfd *ignore_abfd AND
  864. +       boolean ignore)
  865. + {
  866. +   /* The amiga hunk format doesn't have headers.  */
  867. +   return 0;
  868. + }
  869. + /* Provided a BFD, a section and an offset into the section, calculate
  870. +    and return the name of the source file and the line nearest to the
  871. +    wanted location.  */
  872. + boolean
  873. + amiga_find_nearest_line(abfd, section, symbols, offset, filename_ptr,
  874. +             functionname_ptr, line_ptr)
  875. +      bfd *abfd;
  876. +      asection *section;
  877. +      asymbol **symbols;
  878. +      bfd_vma offset;
  879. +      char **filename_ptr;
  880. +      char **functionname_ptr;
  881. +      int *line_ptr;
  882. + {
  883. +   /* fixme (see aoutx.h, for example) */
  884. +   return false;
  885. + }
  886. + static const struct reloc_howto_struct *
  887. + amiga_bfd_reloc_type_lookup (abfd, code)
  888. +        bfd *abfd;
  889. +        bfd_reloc_code_real_type code;
  890. + {
  891. +   switch (code)
  892. +     {
  893. +     case BFD_RELOC_8_PCREL:  return &howto_hunk_reloc8;
  894. +     case BFD_RELOC_16_PCREL: return &howto_hunk_reloc16;
  895. +     case BFD_RELOC_32_PCREL: return &howto_hunk_reloc32;
  896. +     case BFD_RELOC_8:        return &howto_hunk_drel8;
  897. +     case BFD_RELOC_16:       return &howto_hunk_drel16;
  898. +     case BFD_RELOC_32:       return &howto_hunk_drel32;
  899. +     default:                 return 0;
  900. +     }
  901. + }
  902. + /* We don't have core files.  */
  903. + #define    amiga_core_file_failing_command _bfd_dummy_core_file_failing_command
  904. + #define    amiga_core_file_failing_signal _bfd_dummy_core_file_failing_signal
  905. + #define    amiga_core_file_matches_executable_p _bfd_dummy_core_file_matches_executable_p
  906. + /* We use BSD-Unix generic archive files (fixme: test that this actually works).  */
  907. + #define    amiga_openr_next_archived_file    bfd_generic_openr_next_archived_file
  908. + #define    amiga_generic_stat_arch_elt    bfd_generic_stat_arch_elt
  909. + #define    amiga_slurp_armap        bfd_slurp_bsd_armap
  910. + #define    amiga_slurp_extended_name_table    bfd_true
  911. + #define    amiga_write_armap        bsd_write_armap
  912. + #define    amiga_truncate_arname        bfd_bsd_truncate_arname
  913. + #define amiga_bfd_debug_info_start        bfd_void
  914. + #define amiga_bfd_debug_info_end        bfd_void
  915. + #define amiga_bfd_debug_info_accumulate    (PROTO(void,(*),(bfd*, struct sec *))) bfd_void
  916. + /* fixme: (when everything else has been done) a tailor-made
  917. +    amiga_get_relocated_section_contents would probably be faster
  918. +    than the generic routine.  */
  919. + #define amiga_bfd_get_relocated_section_contents  bfd_generic_get_relocated_section_contents
  920. + #define amiga_bfd_relax_section                   bfd_generic_relax_section
  921. + #define amiga_get_lineno (struct lineno_cache_entry *(*)())bfd_nullvoidptr
  922. + #define amiga_close_and_cleanup         bfd_generic_close_and_cleanup
  923. + #define amiga_bfd_make_debug_symbol \
  924. +   ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr)
  925. + #define amiga_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
  926. + #define amiga_bfd_link_add_symbols _bfd_generic_link_add_symbols
  927. + #define amiga_bfd_final_link _bfd_generic_final_link
  928. + #if defined (amiga)
  929. + /* So that the JUMP_TABLE() macro below can work.  */
  930. + #undef amiga
  931. + #endif
  932. + bfd_target amiga_vec =
  933. + {
  934. +   "amiga",        /* name */
  935. +   bfd_target_amiga_flavour,
  936. +   true,            /* data byte order is little */
  937. +   true,            /* header byte order is little */
  938. +   HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT, /* object flags */
  939. +   SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC, /* section flags */
  940. +   '_',                /* symbol leading char */
  941. +   ' ',                /* ar_pad_char */
  942. +   31,                /* ar_max_namelen */
  943. +   2,                /* minimum align */
  944. +   bfd_getb64, bfd_getb_signed_64, bfd_putb64, bfd_getb32, bfd_getb_signed_32,
  945. +   bfd_putb32, bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
  946. +   bfd_getb64, bfd_getb_signed_64, bfd_putb64, bfd_getb32, bfd_getb_signed_32,
  947. +   bfd_putb32, bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
  948. +   {
  949. +     /* bfd_check_format */
  950. +     _bfd_dummy_target,
  951. +     amiga_object_p, 
  952. +     bfd_generic_archive_p,
  953. +     _bfd_dummy_target
  954. +   },
  955. +   {
  956. +     /* bfd_set_format */
  957. +     bfd_false,
  958. +     amiga_mkobject,
  959. +     _bfd_generic_mkarchive,
  960. +     bfd_false
  961. +   },
  962. +   {
  963. +     /* bfd_write_contents */
  964. +     bfd_false,
  965. +     amiga_write_object_contents,
  966. +     _bfd_write_archive_contents,
  967. +     bfd_false
  968. +   },
  969. +   JUMP_TABLE(amiga),
  970. +   (PTR) 0
  971. + #if 0
  972. + /* fixme: no longer in use?  */
  973. +   /* How applications can find out about amiga relocation types (see
  974. +      documentation on reloc types).  */
  975. +   amiga_reloc_type_lookup
  976. + #endif
  977. + };
  978. diff -rc --new-file /src/baseline/gdb-4.12/bfd/bfd-in2.h gdb-4.12/bfd/bfd-in2.h
  979. *** /src/baseline/gdb-4.12/bfd/bfd-in2.h    Thu Feb  3 13:00:58 1994
  980. --- gdb-4.12/bfd/bfd-in2.h    Fri Jun 17 07:33:36 1994
  981. ***************
  982. *** 1737,1742 ****
  983. --- 1737,1743 ----
  984.         struct sgi_core_struct *sgi_core_data;
  985.         struct lynx_core_struct *lynx_core_data;
  986.         struct osf_core_struct *osf_core_data;
  987. +       struct amiga_data_struct *amiga_data;
  988.         PTR any;
  989.         } tdata;
  990.     
  991. ***************
  992. *** 1861,1867 ****
  993.     bfd_target_oasys_flavour,
  994.     bfd_target_tekhex_flavour,
  995.     bfd_target_srec_flavour,
  996. !   bfd_target_som_flavour};
  997.   
  998.    /* Forward declaration.  */
  999.   typedef struct bfd_link_info _bfd_link_info;
  1000. --- 1862,1869 ----
  1001.     bfd_target_oasys_flavour,
  1002.     bfd_target_tekhex_flavour,
  1003.     bfd_target_srec_flavour,
  1004. !   bfd_target_som_flavour,
  1005. !   bfd_target_amiga_flavour};
  1006.   
  1007.    /* Forward declaration.  */
  1008.   typedef struct bfd_link_info _bfd_link_info;
  1009. diff -rc --new-file /src/baseline/gdb-4.12/bfd/bfd.c gdb-4.12/bfd/bfd.c
  1010. *** /src/baseline/gdb-4.12/bfd/bfd.c    Thu Feb  3 12:46:42 1994
  1011. --- gdb-4.12/bfd/bfd.c    Fri Jun 17 07:33:37 1994
  1012. ***************
  1013. *** 168,173 ****
  1014. --- 168,174 ----
  1015.   .      struct sgi_core_struct *sgi_core_data;
  1016.   .      struct lynx_core_struct *lynx_core_data;
  1017.   .      struct osf_core_struct *osf_core_data;
  1018. + .      struct amiga_data_struct *amiga_data;
  1019.   .      PTR any;
  1020.   .      } tdata;
  1021.   .  
  1022. diff -rc --new-file /src/baseline/gdb-4.12/bfd/config/amigados.mh gdb-4.12/bfd/config/amigados.mh
  1023. *** /src/baseline/gdb-4.12/bfd/config/amigados.mh    Thu Jan  1 00:00:00 1970
  1024. --- gdb-4.12/bfd/config/amigados.mh    Fri Jun 17 07:33:38 1994
  1025. ***************
  1026. *** 0 ****
  1027. --- 1,6 ----
  1028. + # Host makefile fragment for Commodore Amiga running AmigaDOS
  1029. + # Use the GNU C compiler.
  1030. + CC=gcc
  1031. + # Don't use -g, it doesn't do anything useful yet.  Optimize though.
  1032. + CFLAGS=-O
  1033. diff -rc --new-file /src/baseline/gdb-4.12/bfd/config/amigados.mt gdb-4.12/bfd/config/amigados.mt
  1034. *** /src/baseline/gdb-4.12/bfd/config/amigados.mt    Thu Jan  1 00:00:00 1970
  1035. --- gdb-4.12/bfd/config/amigados.mt    Fri Jun 17 07:33:38 1994
  1036. ***************
  1037. *** 0 ****
  1038. --- 1,3 ----
  1039. + # Target config file for Commodore Amiga running AmigaDOS
  1040. + DEFAULT_VECTOR=amiga_vec
  1041. + SELECT_ARCHITECTURES=bfd_m68k_arch
  1042. diff -rc --new-file /src/baseline/gdb-4.12/bfd/config.bfd gdb-4.12/bfd/config.bfd
  1043. *** /src/baseline/gdb-4.12/bfd/config.bfd    Thu Feb  3 13:01:00 1994
  1044. --- gdb-4.12/bfd/config.bfd    Fri Jun 17 07:33:39 1994
  1045. ***************
  1046. *** 63,68 ****
  1047. --- 63,69 ----
  1048.     m68*-*-vxworks*)    bfd_name=m68k-aout ;;
  1049.     m68*-ericsson-*)    bfd_name=m68k-aout ;;
  1050.     m68*-netx-*)        bfd_name=m68k-aout ;;
  1051. +   m68*-cbm-amigados*)    bfd_name=amigados ;;
  1052.   
  1053.     m88*-*-sysv4*)    bfd_name=m88k-elf ;;
  1054.     # DGUX used to use COFF, but now (Jan 94) I believe it uses ELF by default.
  1055. diff -rc --new-file /src/baseline/gdb-4.12/bfd/configure.in gdb-4.12/bfd/configure.in
  1056. *** /src/baseline/gdb-4.12/bfd/configure.in    Thu Feb  3 13:00:54 1994
  1057. --- gdb-4.12/bfd/configure.in    Fri Jun 17 22:20:21 1994
  1058. ***************
  1059. *** 137,142 ****
  1060. --- 137,143 ----
  1061.       # with the two vector lists in targets.c.
  1062.       a29kcoff_big_vec)        tb="$tb coff-a29k.o" ;;
  1063.       a_out_adobe_vec)        tb="$tb aout-adobe.o aout32.o stab-syms.o" ;;
  1064. +     amiga_vec)            tb="$tb amiga.o" ;;
  1065.       aout_mips_big_vec)        tb="$tb mipsbsd.o aout32.o stab-syms.o" ;;
  1066.       aout_mips_little_vec)    tb="$tb mipsbsd.o aout32.o stab-syms.o" ;;
  1067.       apollocoff_vec)        tb="$tb coff-apollo.o" ;;
  1068. ***************
  1069. *** 261,270 ****
  1070.   
  1071.   test -n "$DEFAULT_VECTOR" && defvec="$DEFAULT_VECTOR"
  1072.   
  1073.   echo "TDEFAULTS = \
  1074. ! ${defvec+-DDEFAULT_VECTOR=$defvec} \
  1075. ! ${selvecs+-DSELECT_VECS='$selvecs'} \
  1076. ! ${selarchs+-DSELECT_ARCHITECTURES='$selarchs'}" \
  1077.     >> Makefile.2
  1078.   
  1079.   cat Makefile.tmp >> Makefile.2
  1080. --- 262,273 ----
  1081.   
  1082.   test -n "$DEFAULT_VECTOR" && defvec="$DEFAULT_VECTOR"
  1083.   
  1084. + # Because of a bug in pdksh on the Amiga, the -D args in the TDEFAULTS
  1085. + # line are preexpanded to the appropriate Amiga args.
  1086.   echo "TDEFAULTS = \
  1087. ! -DDEFAULT_VECTOR=amiga_vec \
  1088. ! -DSELECT_VECS='&amiga_vec' \
  1089. ! -DSELECT_ARCHITECTURES=bfd_m68k_arch" \
  1090.     >> Makefile.2
  1091.   
  1092.   cat Makefile.tmp >> Makefile.2
  1093. diff -rc --new-file /src/baseline/gdb-4.12/bfd/hosts/amigados.h gdb-4.12/bfd/hosts/amigados.h
  1094. *** /src/baseline/gdb-4.12/bfd/hosts/amigados.h    Thu Jan  1 00:00:00 1970
  1095. --- gdb-4.12/bfd/hosts/amigados.h    Fri Jun 17 07:33:40 1994
  1096. ***************
  1097. *** 0 ****
  1098. --- 1,8 ----
  1099. + /* Host configuration for AmigaDOS */
  1100. + #ifndef hosts_amigados_h
  1101. + #define hosts_amigados_h
  1102. + #include "hosts/std-host.h"
  1103. + #endif /* hosts_amigados_h */
  1104. diff -rc --new-file /src/baseline/gdb-4.12/bfd/libamiga.h gdb-4.12/bfd/libamiga.h
  1105. *** /src/baseline/gdb-4.12/bfd/libamiga.h    Thu Jan  1 00:00:00 1970
  1106. --- gdb-4.12/bfd/libamiga.h    Fri Jun 17 07:33:41 1994
  1107. ***************
  1108. *** 0 ****
  1109. --- 1,149 ----
  1110. + /* BFD back-end data structures for AmigaOS.
  1111. +    Copyright (C) 1992-1994 Free Software Foundation, Inc.
  1112. +    Contributed by Leonard Norrgard.
  1113. + This file is part of BFD, the Binary File Descriptor library.
  1114. + This program is free software; you can redistribute it and/or modify
  1115. + it under the terms of the GNU General Public License as published by
  1116. + the Free Software Foundation; either version 2 of the License, or
  1117. + (at your option) any later version.
  1118. + This program is distributed in the hope that it will be useful,
  1119. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  1120. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1121. + GNU General Public License for more details.
  1122. + You should have received a copy of the GNU General Public License
  1123. + along with this program; if not, write to the Free Software
  1124. + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  1125. + #ifdef __STDC__
  1126. + #define CAT3(a,b,c) a##b##c
  1127. + #else
  1128. + #define CAT3(a,b,c) a/**/b/**/c
  1129. + #endif
  1130. + #define GET_WORD bfd_h_get_32
  1131. + #define GET_SWORD (int32_type)GET_WORD
  1132. + #define PUT_WORD bfd_h_put_32
  1133. + #define NAME(x,y) CAT3(x,_32_,y)
  1134. + #define JNAME(x) CAT(x,_32)
  1135. + #define BYTES_IN_WORD 4
  1136. + /* Hunk ID numbers.  */
  1137. + #define HUNK_UNIT       999
  1138. + #define HUNK_NAME    1000
  1139. + #define HUNK_CODE    1001
  1140. + #define HUNK_DATA    1002
  1141. + #define HUNK_BSS    1003
  1142. + #define HUNK_RELOC32    1004
  1143. + #define HUNK_RELOC16    1005
  1144. + #define HUNK_RELOC8    1006
  1145. + #define HUNK_EXT    1007
  1146. + #define HUNK_SYMBOL    1008
  1147. + #define HUNK_DEBUG    1009
  1148. + #define HUNK_END    1010
  1149. + #define HUNK_HEADER    1011
  1150. + #define HUNK_OVERLAY    1013
  1151. + #define HUNK_BREAK    1014
  1152. + #define HUNK_DREL32    1015
  1153. + #define HUNK_DREL16    1016
  1154. + #define HUNK_DREL8    1017
  1155. + #define HUNK_LIB    1018
  1156. + #define HUNK_INDEX    1019
  1157. + /* The hunk ID part.  */
  1158. + #define HUNK_VALUE(hunk_id) ((hunk_id) & 0x3fffffff)
  1159. + /* Attributes of a hunk.  */
  1160. + #define HUNK_ATTRIBUTE(hunk_id) ((hunk_id) >> 30)
  1161. + #define HUNK_ATTR_CHIP 0x01 /* Hunk contents must go into chip (graphics) memory.  */
  1162. + /* HUNK_EXT sub-types.  */
  1163. + #define EXT_SYMB    0    /* Symbol table.  */
  1164. + #define EXT_DEF        1    /* Relocatable definition.  */
  1165. + #define EXT_ABS        2    /* Absolute definition. */
  1166. + #define EXT_RES        3    /* Obsolete.  */
  1167. + #define EXT_REF32    129    /* 32 bit reference to symbol.  */
  1168. + #define EXT_COMMON    130    /* 32 bit reference to COMMON block.  */
  1169. + #define EXT_REF16    131    /* 16 bit reference to symbol.  */
  1170. + #define EXT_REF8    132    /*  8 bit reference to symbol.  */
  1171. + #define EXT_DEXT32    133    /* 32 bit data releative reference.  */
  1172. + #define EXT_DEXT16    134    /* 16 bit data releative reference.  */
  1173. + #define EXT_DEXT8    135    /*  8 bit data releative reference.  */
  1174. + typedef struct amiga_reloc {
  1175. +   arelent relent;
  1176. +   struct amiga_reloc *next;
  1177. +   int symbol_number;
  1178. +   unsigned int target_hunk;
  1179. + } amiga_reloc_type;
  1180. + typedef struct amiga_symbol {
  1181. +   asymbol symbol;
  1182. +   struct amiga_symbol *next;
  1183. +   unsigned long hunk_number;
  1184. +   unsigned long value;
  1185. +   unsigned char type;
  1186. + } amiga_symbol_type;
  1187. + typedef struct amiga_per_section
  1188. + {
  1189. +   amiga_reloc_type *reloc_tail_ptr;
  1190. + } amiga_per_section_type;
  1191. + #define amiga_per_section(x) ((amiga_per_section_type *)((x)->used_by_bfd))
  1192. + /* The `tdata' struct for all a.out-like object file formats.
  1193. +    Various things depend on this struct being around any time an a.out
  1194. +    file is being handled.  An example is dbxread.c in GDB.  */
  1195. + struct amiga_data {
  1196. +   struct internal_exec *hdr;        /* exec file header */
  1197. +   amiga_symbol_type *symbols;        /* symtab for input bfd */
  1198. +   /* Filler, so we can pretend to be an a.out to GDB.  */
  1199. +   asection *dummy_1_textsec;
  1200. +   asection *dummy_2_datasec;
  1201. +   asection *dummy_3_bsssec;
  1202. +   /* The positions of the string table and symbol table.  */
  1203. +   file_ptr sym_filepos;
  1204. +   file_ptr str_filepos;
  1205. +   unsigned int n_symbols;               /* number of symbols */
  1206. +   /* Size of a relocation entry in external form */
  1207. +   unsigned dummy_reloc_entry_size;
  1208. +   /* Size of a symbol table entry in external form */
  1209. +   unsigned symbol_entry_size;
  1210. +   unsigned exec_bytes_size;
  1211. +   unsigned vma_adjusted : 1;  
  1212. + };
  1213. + typedef struct  amiga_data_struct {
  1214. +   struct amiga_data a;
  1215. +   unsigned long symtab_size;
  1216. +   unsigned long stringtab_size;
  1217. +   unsigned long *first_byte;
  1218. +   unsigned long *file_end;
  1219. +   unsigned long *file_pointer;
  1220. +   amiga_symbol_type *external_symbols;
  1221. +   amiga_symbol_type *external_references;
  1222. +   amiga_symbol_type **symbol_tail_ptr;
  1223. + } amiga_data_type;
  1224. + #define    adata(bfd)        ((bfd)->tdata.amiga_data->a)
  1225. + /* We take the address of the first element of an asymbol to ensure that the
  1226. +    macro is only ever applied to an asymbol */
  1227. + #define amiga_symbol(asymbol) ((amiga_symbol_type *)(&(asymbol)->the_bfd))
  1228. + #define AMIGA_DATA(abfd) ((abfd)->tdata.amiga_data)
  1229. diff -rc --new-file /src/baseline/gdb-4.12/bfd/targets.c gdb-4.12/bfd/targets.c
  1230. *** /src/baseline/gdb-4.12/bfd/targets.c    Thu Feb  3 13:00:59 1994
  1231. --- gdb-4.12/bfd/targets.c    Fri Jun 17 07:33:42 1994
  1232. ***************
  1233. *** 129,135 ****
  1234.   .  bfd_target_oasys_flavour,
  1235.   .  bfd_target_tekhex_flavour,
  1236.   .  bfd_target_srec_flavour,
  1237. ! .  bfd_target_som_flavour};
  1238.   .
  1239.   .{* Forward declaration.  *}
  1240.   .typedef struct bfd_link_info _bfd_link_info;
  1241. --- 129,136 ----
  1242.   .  bfd_target_oasys_flavour,
  1243.   .  bfd_target_tekhex_flavour,
  1244.   .  bfd_target_srec_flavour,
  1245. ! .  bfd_target_som_flavour,
  1246. ! .  bfd_target_amiga_flavour};
  1247.   .
  1248.   .{* Forward declaration.  *}
  1249.   .typedef struct bfd_link_info _bfd_link_info;
  1250. ***************
  1251. *** 339,344 ****
  1252. --- 340,346 ----
  1253.      we can't intermix extern's and initializers.  */
  1254.   extern bfd_target a29kcoff_big_vec;
  1255.   extern bfd_target a_out_adobe_vec;
  1256. + extern bfd_target amiga_vec;
  1257.   extern bfd_target aout_mips_big_vec;
  1258.   extern bfd_target aout_mips_little_vec;
  1259.   extern bfd_target apollocoff_vec;
  1260. ***************
  1261. *** 430,435 ****
  1262. --- 432,438 ----
  1263.          it wasn't omitted by mistake.  */
  1264.       &a29kcoff_big_vec,
  1265.       &a_out_adobe_vec,
  1266. +         &amiga_vec,
  1267.   #if 0                /* No one seems to use this.  */
  1268.       &aout_mips_big_vec,
  1269.   #endif
  1270. diff -rc --new-file /src/baseline/gdb-4.12/config/mh-amigados gdb-4.12/config/mh-amigados
  1271. *** /src/baseline/gdb-4.12/config/mh-amigados    Thu Jan  1 00:00:00 1970
  1272. --- gdb-4.12/config/mh-amigados    Fri Jun 17 07:33:43 1994
  1273. ***************
  1274. *** 0 ****
  1275. --- 1,6 ----
  1276. + # Host makefile fragment for Commodore Amiga running AmigaDOS.
  1277. + # There is no standard system compiler.  Assume use GNU C.
  1278. + CC = gcc
  1279. + # There is no support for -g yet.  But use -O instead.
  1280. + CFLAGS = -O
  1281. diff -rc --new-file /src/baseline/gdb-4.12/configure gdb-4.12/configure
  1282. *** /src/baseline/gdb-4.12/configure    Thu Feb  3 13:27:16 1994
  1283. --- gdb-4.12/configure    Fri Jun 17 19:26:30 1994
  1284. ***************
  1285. *** 33,43 ****
  1286.   #       config.status is removed.
  1287.   #
  1288.   
  1289.   export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh $0 $argv; kill $$)
  1290.   
  1291.   remove=rm
  1292. ! hard_link=ln
  1293. ! symbolic_link='ln -s'
  1294.   
  1295.   #for Test
  1296.   #remove="echo rm"
  1297. --- 33,46 ----
  1298.   #       config.status is removed.
  1299.   #
  1300.   
  1301. + # In places where the argument to echo may start with a '-', use /bin/echo
  1302. + # since the AmigaDOS pdksh builtin echo botches this case.
  1303.   export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh $0 $argv; kill $$)
  1304.   
  1305.   remove=rm
  1306. ! hard_link=cp
  1307. ! symbolic_link=cp
  1308.   
  1309.   #for Test
  1310.   #remove="echo rm"
  1311. ***************
  1312. *** 68,74 ****
  1313.   next_tmpdir=
  1314.   norecursion=
  1315.   package_makefile_frag=
  1316. ! prefix=/usr/local
  1317.   progname=
  1318.   program_prefix=
  1319.   program_prefixoption=
  1320. --- 71,80 ----
  1321.   next_tmpdir=
  1322.   norecursion=
  1323.   package_makefile_frag=
  1324. ! # This is a hack so we don't have to remember to always configure using
  1325. ! # the "--prefix=/gnu" option.  Personally I feel this should be settable
  1326. ! # in a config file.  -fnf
  1327. ! prefix=/gnu
  1328.   progname=
  1329.   program_prefix=
  1330.   program_prefixoption=
  1331. ***************
  1332. *** 105,113 ****
  1333.   ## path.  Since PATH might include "." we also add `pwd` to the end of PATH.
  1334.   ##
  1335.   
  1336. ! progname=$0
  1337.   # if PWD already has a value, it is probably wrong.
  1338. ! if [ -n "$PWD" ]; then PWD=`pwd`; fi
  1339.   
  1340.   case "${progname}" in
  1341.   /*) ;;
  1342. --- 111,122 ----
  1343.   ## path.  Since PATH might include "." we also add `pwd` to the end of PATH.
  1344.   ##
  1345.   
  1346. ! # For some reason, the value of $0 in AmigaDOS pdksh ends up with a
  1347. ! # trailing '/' that needs to be stripped.
  1348. ! progname=`/bin/echo $0 | sed 's:/$::'`
  1349.   # if PWD already has a value, it is probably wrong.
  1350. ! # The AmigaDOS pksh can't change the value of PWD, it's readonly.
  1351. ! #if [ -n "$PWD" ]; then PWD=`pwd`; fi
  1352.   
  1353.   case "${progname}" in
  1354.   /*) ;;
  1355. ***************
  1356. *** 127,133 ****
  1357.                   next_exec_prefix=
  1358.           elif [ -n "${next_site}" ] ; then site=${arg} ; site_option=-site=${site} ; next_site=
  1359.           # remove any possible trailing slash from srcdir.  See note below.
  1360. !         elif [ -n "${next_srcdir}" ] ; then srcdir=`echo ${arg} | sed -e 's:/$::'` ; next_srcdir=
  1361.           elif [ -n "${next_program_prefix}" ] ; then
  1362.                   program_prefix=${arg}
  1363.                   program_prefixoption="-program_prefix=${program_prefix}"
  1364. --- 136,142 ----
  1365.                   next_exec_prefix=
  1366.           elif [ -n "${next_site}" ] ; then site=${arg} ; site_option=-site=${site} ; next_site=
  1367.           # remove any possible trailing slash from srcdir.  See note below.
  1368. !         elif [ -n "${next_srcdir}" ] ; then srcdir=`/bin/echo ${arg} | sed -e 's:/$::'` ; next_srcdir=
  1369.           elif [ -n "${next_program_prefix}" ] ; then
  1370.                   program_prefix=${arg}
  1371.                   program_prefixoption="-program_prefix=${program_prefix}"
  1372. ***************
  1373. *** 139,145 ****
  1374.           elif [ -n "${next_program_transform_name}" ] ; then
  1375.                   # Double any backslashes or dollar signs in the argument
  1376.           if [ -n "${arg}" ] ; then
  1377. !             program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`"
  1378.           fi
  1379.                   program_transform_nameoption="${program_transform_nameoption} --program-transform-name='${arg}'"
  1380.                   next_program_transform_name=
  1381. --- 148,154 ----
  1382.           elif [ -n "${next_program_transform_name}" ] ; then
  1383.                   # Double any backslashes or dollar signs in the argument
  1384.           if [ -n "${arg}" ] ; then
  1385. !             program_transform_name="${program_transform_name} -e `/bin/echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`"
  1386.           fi
  1387.                   program_transform_nameoption="${program_transform_nameoption} --program-transform-name='${arg}'"
  1388.                   next_program_transform_name=
  1389. ***************
  1390. *** 185,191 ****
  1391.                   case ${arg} in
  1392.                   -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
  1393.                           case "${build_alias}" in
  1394. !                         "") build_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`" ;;
  1395.                           *)
  1396.                                   echo '***' Can only configure for one build machine at a time.  1>&2
  1397.                                   fatal=yes
  1398. --- 194,200 ----
  1399.                   case ${arg} in
  1400.                   -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
  1401.                           case "${build_alias}" in
  1402. !                         "") build_alias="`/bin/echo ${arg} | sed 's/^[-a-z]*=//'`" ;;
  1403.                           *)
  1404.                                   echo '***' Can only configure for one build machine at a time.  1>&2
  1405.                                   fatal=yes
  1406. ***************
  1407. *** 196,202 ****
  1408.                           next_build=yes
  1409.                           ;;
  1410.                   -exec_prefix=* | --exec_prefix=* | --exec_prefi=* | --exec_pref=* | --exec_pre=* | --exec_pr=* | --exec_p=* | --exec_=* | --exec=* | --exe=* | --ex=* | --e=* | -exec-prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* )
  1411. !                         exec_prefix=`echo ${arg} | sed 's/^[-a-z_]*=//'`
  1412.                           exec_prefixoption=${arg}
  1413.                           ;;
  1414.                   -exec_prefix | --exec_prefix | --exec_prefi | --exec_pref | --exec_pre | --exec_pr | --exec_p | --exec_ | --exec | --exe | --ex | --e | -exec-prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec-)
  1415. --- 205,211 ----
  1416.                           next_build=yes
  1417.                           ;;
  1418.                   -exec_prefix=* | --exec_prefix=* | --exec_prefi=* | --exec_pref=* | --exec_pre=* | --exec_pr=* | --exec_p=* | --exec_=* | --exec=* | --exe=* | --ex=* | --e=* | -exec-prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* )
  1419. !                         exec_prefix=`/bin/echo ${arg} | sed 's/^[-a-z_]*=//'`
  1420.                           exec_prefixoption=${arg}
  1421.                           ;;
  1422.                   -exec_prefix | --exec_prefix | --exec_prefi | --exec_pref | --exec_pre | --exec_pr | --exec_p | --exec_ | --exec | --exe | --ex | --e | -exec-prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec-)
  1423. ***************
  1424. *** 211,217 ****
  1425.                   -host=* | --host=* | --hos=* | --ho=*)
  1426.                           case "${host_alias}" in
  1427.                           "")
  1428. !                                 host_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`"
  1429.                                   ;;
  1430.                           *)
  1431.                                   echo '***' Can only configure for one host at a time.  1>&2
  1432. --- 220,226 ----
  1433.                   -host=* | --host=* | --hos=* | --ho=*)
  1434.                           case "${host_alias}" in
  1435.                           "")
  1436. !                                 host_alias="`/bin/echo ${arg} | sed 's/^[-a-z]*=//'`"
  1437.                                   ;;
  1438.                           *)
  1439.                                   echo '***' Can only configure for one host at a time.  1>&2
  1440. ***************
  1441. *** 237,243 ****
  1442.                           norecursion=true
  1443.                           ;;
  1444.                   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=*)
  1445. !                         prefix=`echo ${arg} | sed 's/^[-a-z]*=//'`
  1446.                           prefixoption=${arg}
  1447.                           ;;
  1448.                   -prefix | --prefix | --prefi | --pref | --pre)
  1449. --- 246,252 ----
  1450.                           norecursion=true
  1451.                           ;;
  1452.                   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=*)
  1453. !                         prefix=`/bin/echo ${arg} | sed 's/^[-a-z]*=//'`
  1454.                           prefixoption=${arg}
  1455.                           ;;
  1456.                   -prefix | --prefix | --prefi | --pref | --pre)
  1457. ***************
  1458. *** 245,268 ****
  1459.                           ;;
  1460.                   -rm | --rm) removing=${arg} ;;
  1461.                   -program_prefix=* | --program_prefix=* | --program_prefi=* | --program_pref=* | --program_pre=* | --program_pr=* | --program_p=* | -program-prefix=* | --program-prefix=* | --program-prefi=* | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
  1462. !                         program_prefix=`echo ${arg} | sed 's/^[-a-z_]*=//'`
  1463.                           program_prefixoption=${arg}
  1464.                           ;;
  1465.                   -program_prefix | --program_prefix | --program_prefi | --program_pref | --program_pre | --program_pr | --program_p | -program-prefix | --program-prefix | --program-prefi | --program-pref | --program-pre | --program-pr | --program-p)
  1466.                           next_program_prefix=yes
  1467.                           ;;
  1468.                   -program_suffix=* | --program_suffix=* | --program_suffi=* | --program_suff=* | --program_suf=* | --program_su=* | --program_s=* | -program-suffix=* | --program-suffix=* | --program-suffi=* | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
  1469. !                         program_suffix=`echo ${arg} | sed 's/^[-a-z_]*=//'`
  1470.                           program_suffixoption=${arg}
  1471.                           ;;
  1472.                   -program_suffix | --program_suffix | --program_suffi | --program_suff | --program_suf | --program_su | --program_s |-program-suffix | --program-suffix | --program-suffi | --program-suff | --program-suf | --program-su | --program-s)
  1473.                           next_program_suffix=yes
  1474.                           ;;
  1475.                   -program_transform_name=* | --program_transform_name=* | --program_transform_nam=* | --program_transform_na=* | --program_transform_n=* | --program_transform_=* | --program_transform=* | --program_transfor=* | --program_transfo=* | --program_transf=* | --program_trans=* | --program_tran=* | --program_tra=* | --program_tr=* | --program_t=* | -program-transform-name=* | --program-transform-name=* | --program-transform-nam=* | --program-transform-na=* | --program-transform-n=* | --program-transform-=* | --program-transform=* | --program-transfor=* | --program-transfo=* | --program-transf=* | --program-trans=* | --program-tran=* | --program-tra=* | --program-tr=* | --program-t=*)
  1476. !             arg=`echo ${arg} | sed -e 's/^[-a-z_]*=//'`
  1477.                           # Double any \ or $ in the argument
  1478.               if [ -n "${arg}" ] ; then
  1479. !                             program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`"
  1480.               fi
  1481.                           program_transform_nameoption="${program_transform_nameoption} --program-transform-name='${arg}'"
  1482.                           ;;
  1483. --- 254,277 ----
  1484.                           ;;
  1485.                   -rm | --rm) removing=${arg} ;;
  1486.                   -program_prefix=* | --program_prefix=* | --program_prefi=* | --program_pref=* | --program_pre=* | --program_pr=* | --program_p=* | -program-prefix=* | --program-prefix=* | --program-prefi=* | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
  1487. !                         program_prefix=`/bin/echo ${arg} | sed 's/^[-a-z_]*=//'`
  1488.                           program_prefixoption=${arg}
  1489.                           ;;
  1490.                   -program_prefix | --program_prefix | --program_prefi | --program_pref | --program_pre | --program_pr | --program_p | -program-prefix | --program-prefix | --program-prefi | --program-pref | --program-pre | --program-pr | --program-p)
  1491.                           next_program_prefix=yes
  1492.                           ;;
  1493.                   -program_suffix=* | --program_suffix=* | --program_suffi=* | --program_suff=* | --program_suf=* | --program_su=* | --program_s=* | -program-suffix=* | --program-suffix=* | --program-suffi=* | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
  1494. !                         program_suffix=`/bin/echo ${arg} | sed 's/^[-a-z_]*=//'`
  1495.                           program_suffixoption=${arg}
  1496.                           ;;
  1497.                   -program_suffix | --program_suffix | --program_suffi | --program_suff | --program_suf | --program_su | --program_s |-program-suffix | --program-suffix | --program-suffi | --program-suff | --program-suf | --program-su | --program-s)
  1498.                           next_program_suffix=yes
  1499.                           ;;
  1500.                   -program_transform_name=* | --program_transform_name=* | --program_transform_nam=* | --program_transform_na=* | --program_transform_n=* | --program_transform_=* | --program_transform=* | --program_transfor=* | --program_transfo=* | --program_transf=* | --program_trans=* | --program_tran=* | --program_tra=* | --program_tr=* | --program_t=* | -program-transform-name=* | --program-transform-name=* | --program-transform-nam=* | --program-transform-na=* | --program-transform-n=* | --program-transform-=* | --program-transform=* | --program-transfor=* | --program-transfo=* | --program-transf=* | --program-trans=* | --program-tran=* | --program-tra=* | --program-tr=* | --program-t=*)
  1501. !             arg=`/bin/echo ${arg} | sed -e 's/^[-a-z_]*=//'`
  1502.                           # Double any \ or $ in the argument
  1503.               if [ -n "${arg}" ] ; then
  1504. !                             program_transform_name="${program_transform_name} -e `/bin/echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`"
  1505.               fi
  1506.                           program_transform_nameoption="${program_transform_nameoption} --program-transform-name='${arg}'"
  1507.                           ;;
  1508. ***************
  1509. *** 271,277 ****
  1510.                           ;;
  1511.                   -site=* | --site=* | --sit=* | --si=*)
  1512.                           site_option=${arg}
  1513. !                         site=`echo ${arg} | sed 's/^[-a-z]*=//'`
  1514.                           ;;
  1515.                   -site | --site | --sit)
  1516.                           next_site=yes
  1517. --- 280,286 ----
  1518.                           ;;
  1519.                   -site=* | --site=* | --sit=* | --si=*)
  1520.                           site_option=${arg}
  1521. !                         site=`/bin/echo ${arg} | sed 's/^[-a-z]*=//'`
  1522.                           ;;
  1523.                   -site | --site | --sit)
  1524.                           next_site=yes
  1525. ***************
  1526. *** 281,294 ****
  1527.                   # it.  Ordinarily this is ok, but emacs takes double slash to
  1528.                   # mean "forget the first part".
  1529.                   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
  1530. !                         srcdir=`echo ${arg} | sed 's/^[-a-z]*=//' | sed -e 's:/$::'`
  1531.                           ;;
  1532.                   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
  1533.                           next_srcdir=yes
  1534.                           ;;
  1535.                   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=*)
  1536.                           case "${target_alias}" in
  1537. !                         "") target_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`" ;;
  1538.                           *)
  1539.                                   echo '***' Can only configure for one target at a time.  1>&2
  1540.                                   fatal=yes
  1541. --- 290,303 ----
  1542.                   # it.  Ordinarily this is ok, but emacs takes double slash to
  1543.                   # mean "forget the first part".
  1544.                   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
  1545. !                         srcdir=`/bin/echo ${arg} | sed 's/^[-a-z]*=//' | sed -e 's:/$::'`
  1546.                           ;;
  1547.                   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
  1548.                           next_srcdir=yes
  1549.                           ;;
  1550.                   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=*)
  1551.                           case "${target_alias}" in
  1552. !                         "") target_alias="`/bin/echo ${arg} | sed 's/^[-a-z]*=//'`" ;;
  1553.                           *)
  1554.                                   echo '***' Can only configure for one target at a time.  1>&2
  1555.                                   fatal=yes
  1556. ***************
  1557. *** 300,311 ****
  1558.                           ;;
  1559.                   -tmpdir=* | --tmpdir=* | --tmpdi=* | --tmpd=* | --tmp=* | --tm=*)
  1560.                           tmpdiroption=${arg}
  1561. !                         TMPDIR=`echo ${arg} | sed 's/^[-a-z]*=//'`
  1562.                           ;;
  1563.                   -tmpdir | --tmpdir | --tmpdi | --tmpd | --tmp | --tm)
  1564.                           next_tmpdir=yes
  1565.                           ;;
  1566. !                 -v | -verbose | --v)
  1567.                           redirect=
  1568.                           verbose=-v
  1569.                           ;;
  1570. --- 309,320 ----
  1571.                           ;;
  1572.                   -tmpdir=* | --tmpdir=* | --tmpdi=* | --tmpd=* | --tmp=* | --tm=*)
  1573.                           tmpdiroption=${arg}
  1574. !                         TMPDIR=`/bin/echo ${arg} | sed 's/^[-a-z]*=//'`
  1575.                           ;;
  1576.                   -tmpdir | --tmpdir | --tmpdi | --tmpd | --tmp | --tm)
  1577.                           next_tmpdir=yes
  1578.                           ;;
  1579. !                 -v | -verbose | --v | --verb*)
  1580.                           redirect=
  1581.                           verbose=-v
  1582.                           ;;
  1583. ***************
  1584. *** 314,331 ****
  1585.                           exit 0
  1586.                           ;;
  1587.                   -with*=* | --with*=*)
  1588. !                         withopt=`echo ${arg} | sed 's:^-*\(with[^=]*\)=.*$:\1:;s/-/_/g'`
  1589. !                         withval=`echo ${arg} | sed 's:^-*with[^=]*=\(.*\)$:\1:'`
  1590.                           eval $withopt="$withval"
  1591.                           withoptions="$withoptions $arg"
  1592.                           ;;
  1593.                   -without* | --without*)
  1594. !                         withopt=`echo ${arg} | sed 's:^-*without:with:;s/-/_/g'`        
  1595.                           eval $withopt=no
  1596.                           withoutoptions="$withoutoptions $arg"
  1597.                           ;;
  1598.                   -with* | --with*)
  1599. !                         withopt=`echo ${arg} | sed 's:^-*with:with:;s/-/_/g'`
  1600.                           eval $withopt=yes
  1601.                           withoptions="$withoptions $arg"
  1602.                           ;;
  1603. --- 323,340 ----
  1604.                           exit 0
  1605.                           ;;
  1606.                   -with*=* | --with*=*)
  1607. !                         withopt=`/bin/echo ${arg} | sed 's:^-*\(with[^=]*\)=.*$:\1:;s/-/_/g'`
  1608. !                         withval=`/bin/echo ${arg} | sed 's:^-*with[^=]*=\(.*\)$:\1:'`
  1609.                           eval $withopt="$withval"
  1610.                           withoptions="$withoptions $arg"
  1611.                           ;;
  1612.                   -without* | --without*)
  1613. !                         withopt=`/bin/echo ${arg} | sed 's:^-*without:with:;s/-/_/g'`        
  1614.                           eval $withopt=no
  1615.                           withoutoptions="$withoutoptions $arg"
  1616.                           ;;
  1617.                   -with* | --with*)
  1618. !                         withopt=`/bin/echo ${arg} | sed 's:^-*with:with:;s/-/_/g'`
  1619.                           eval $withopt=yes
  1620.                           withoptions="$withoptions $arg"
  1621.                           ;;
  1622. ***************
  1623. *** 549,573 ****
  1624.   *)
  1625.       result=`${configsub} ${build_alias}`
  1626.           buildopt="--build=${build_alias}"
  1627. !     build_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
  1628. !     build_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
  1629. !     build_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
  1630.       build=${build_cpu}-${build_vendor}-${build_os}
  1631.       ;;
  1632.   esac
  1633.   
  1634.   result=`${configsub} ${host_alias}`
  1635. ! host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
  1636. ! host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
  1637. ! host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
  1638.   host=${host_cpu}-${host_vendor}-${host_os}
  1639.   
  1640.   . ${tmpfile}.hst
  1641.   
  1642.   result=`${configsub} ${target_alias}`
  1643. ! target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
  1644. ! target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
  1645. ! target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
  1646.   target=${target_cpu}-${target_vendor}-${target_os}
  1647.   
  1648.   . ${tmpfile}.tgt
  1649. --- 558,582 ----
  1650.   *)
  1651.       result=`${configsub} ${build_alias}`
  1652.           buildopt="--build=${build_alias}"
  1653. !     build_cpu=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
  1654. !     build_vendor=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
  1655. !     build_os=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
  1656.       build=${build_cpu}-${build_vendor}-${build_os}
  1657.       ;;
  1658.   esac
  1659.   
  1660.   result=`${configsub} ${host_alias}`
  1661. ! host_cpu=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
  1662. ! host_vendor=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
  1663. ! host_os=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
  1664.   host=${host_cpu}-${host_vendor}-${host_os}
  1665.   
  1666.   . ${tmpfile}.hst
  1667.   
  1668.   result=`${configsub} ${target_alias}`
  1669. ! target_cpu=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`
  1670. ! target_vendor=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
  1671. ! target_os=`/bin/echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
  1672.   target=${target_cpu}-${target_vendor}-${target_os}
  1673.   
  1674.   . ${tmpfile}.tgt
  1675. ***************
  1676. *** 851,857 ****
  1677.           # make sure that some sort of reasonable default exists for these 
  1678.           # two variables
  1679.           CXX=${CXX-"g++ -O"}
  1680. !         CC=${CC-cc}
  1681.   
  1682.               # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
  1683.               # remove any form feeds.
  1684. --- 860,866 ----
  1685.           # make sure that some sort of reasonable default exists for these 
  1686.           # two variables
  1687.           CXX=${CXX-"g++ -O"}
  1688. !         CC=${CC-gcc}
  1689.   
  1690.               # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
  1691.               # remove any form feeds.
  1692. ***************
  1693. *** 988,993 ****
  1694. --- 997,1003 ----
  1695.   
  1696.   ### The recursion line is here.
  1697.               if [ ! -z "${recprog}" ] ; then
  1698. +                             echo ${config_shell} ${recprog} ${verbose} ${buildopt} --host=${host_alias} --target=${target_alias} ${prefixoption} ${tmpdiroption} ${exec_prefixoption} ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${removing} ${redirect}
  1699.                               if eval ${config_shell} ${recprog} ${verbose} ${buildopt} --host=${host_alias} --target=${target_alias} \
  1700.                                       ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \
  1701.                                       ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${removing} ${redirect} ; then
  1702. diff -rc --new-file /src/baseline/gdb-4.12/configure.in gdb-4.12/configure.in
  1703. *** /src/baseline/gdb-4.12/configure.in    Thu Feb  3 13:27:17 1994
  1704. --- gdb-4.12/configure.in    Fri Jun 17 07:33:46 1994
  1705. ***************
  1706. *** 108,113 ****
  1707. --- 108,114 ----
  1708.                   cross_only="xiberty" ;;
  1709.     *-*-sysv4*)             host_makefile_frag=config/mh-sysv4 ;;
  1710.     *-*-sysv*)              host_makefile_frag=config/mh-sysv ;;
  1711. +   *-*-amigados*)      host_makefile_frag=config/mh-amigados ;;
  1712.   esac
  1713.   
  1714.   # per-target:
  1715. diff -rc --new-file /src/baseline/gdb-4.12/gdb/Makefile.in gdb-4.12/gdb/Makefile.in
  1716. *** /src/baseline/gdb-4.12/gdb/Makefile.in    Thu Feb  3 12:45:29 1994
  1717. --- gdb-4.12/gdb/Makefile.in    Fri Jun 17 07:33:48 1994
  1718. ***************
  1719. *** 70,77 ****
  1720.   srcdir = .
  1721.   
  1722.   # If you use bison instead of yacc, it needs to include the "-y" argument.
  1723. ! #BISON=bison -y
  1724. ! BISON=yacc
  1725.   YACC=$(BISON)
  1726.   
  1727.   # where to find makeinfo, preferably one designed for texinfo-2
  1728. --- 70,77 ----
  1729.   srcdir = .
  1730.   
  1731.   # If you use bison instead of yacc, it needs to include the "-y" argument.
  1732. ! BISON=bison -y
  1733. ! #BISON=yacc
  1734.   YACC=$(BISON)
  1735.   
  1736.   # where to find makeinfo, preferably one designed for texinfo-2
  1737. ***************
  1738. *** 310,316 ****
  1739.       mem-break.c minsyms.c mipsread.c nlmread.c objfiles.c parse.c \
  1740.       printcmd.c remote.c source.c stabsread.c stack.c symfile.c symmisc.c \
  1741.       symtab.c target.c thread.c typeprint.c utils.c valarith.c valops.c \
  1742. !     valprint.c values.c serial.c ser-unix.c mdebugread.c
  1743.   
  1744.   # Files that are not source code, but need to go into
  1745.   # gdb-$(VERSION).tar.Z.
  1746. --- 310,316 ----
  1747.       mem-break.c minsyms.c mipsread.c nlmread.c objfiles.c parse.c \
  1748.       printcmd.c remote.c source.c stabsread.c stack.c symfile.c symmisc.c \
  1749.       symtab.c target.c thread.c typeprint.c utils.c valarith.c valops.c \
  1750. !     valprint.c values.c serial.c ser-unix.c mdebugread.c amigaread.c
  1751.   
  1752.   # Files that are not source code, but need to go into
  1753.   # gdb-$(VERSION).tar.Z.
  1754. ***************
  1755. *** 443,449 ****
  1756.       dwarfread.o mipsread.o stabsread.o core.o c-lang.o ch-lang.o m2-lang.o \
  1757.       complaints.o typeprint.o c-typeprint.o ch-typeprint.o m2-typeprint.o \
  1758.       c-valprint.o cp-valprint.o ch-valprint.o m2-valprint.o nlmread.o \
  1759. !     serial.o mdebugread.o
  1760.   
  1761.   RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES)
  1762.   
  1763. --- 443,449 ----
  1764.       dwarfread.o mipsread.o stabsread.o core.o c-lang.o ch-lang.o m2-lang.o \
  1765.       complaints.o typeprint.o c-typeprint.o ch-typeprint.o m2-typeprint.o \
  1766.       c-valprint.o cp-valprint.o ch-valprint.o m2-valprint.o nlmread.o \
  1767. !     serial.o mdebugread.o amigaread.o
  1768.   
  1769.   RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES)
  1770.   
  1771. ***************
  1772. *** 870,876 ****
  1773.   ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
  1774.       29k-share/udi/udi2go32.c \
  1775.       a29k-pinsn.c a29k-tdep.c a68v-nat.c alpha-nat.c alpha-tdep.c \
  1776. !     altos-xdep.c arm-convert.s \
  1777.       arm-pinsn.c arm-tdep.c arm-xdep.c coff-solib.c convex-pinsn.c \
  1778.       convex-tdep.c \
  1779.       convex-xdep.c core-svr4.c coredep.c corelow.c dcache.c delta68-nat.c \
  1780. --- 870,876 ----
  1781.   ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
  1782.       29k-share/udi/udi2go32.c \
  1783.       a29k-pinsn.c a29k-tdep.c a68v-nat.c alpha-nat.c alpha-tdep.c \
  1784. !     altos-xdep.c amigaread.c arm-convert.s \
  1785.       arm-pinsn.c arm-tdep.c arm-xdep.c coff-solib.c convex-pinsn.c \
  1786.       convex-tdep.c \
  1787.       convex-xdep.c core-svr4.c coredep.c corelow.c dcache.c delta68-nat.c \
  1788. ***************
  1789. *** 1074,1079 ****
  1790. --- 1074,1081 ----
  1791.       $(inferior_h) $(symtab_h) $(dis-asm.h)
  1792.   
  1793.   altos-xdep.o: altos-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h)
  1794. + amigaread.o: amigaread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
  1795. +     gdb-stabs.h objfiles.h symfile.h $(symtab_h)
  1796.   arm-pinsn.o: arm-pinsn.c $(OP_INCLUDE)/arm.h $(defs_h) $(symtab_h)
  1797.   
  1798.   blockframe.o: blockframe.c $(defs_h) $(gdbcore_h) $(inferior_h) \
  1799. diff -rc --new-file /src/baseline/gdb-4.12/gdb/amigaread.c gdb-4.12/gdb/amigaread.c
  1800. *** /src/baseline/gdb-4.12/gdb/amigaread.c    Thu Jan  1 00:00:00 1970
  1801. --- gdb-4.12/gdb/amigaread.c    Fri Jun 17 07:33:49 1994
  1802. ***************
  1803. *** 0 ****
  1804. --- 1,256 ----
  1805. + /* Read Amigados object files for GDB.
  1806. +    Copyright 1991, 1992, 1994 Free Software Foundation, Inc.
  1807. +    Converted to Amigados format files by Leonard Norrgard.  Original
  1808. +    was paread.c by Fred Fish.
  1809. + This file is part of GDB.
  1810. + This program is free software; you can redistribute it and/or modify
  1811. + it under the terms of the GNU General Public License as published by
  1812. + the Free Software Foundation; either version 2 of the License, or
  1813. + (at your option) any later version.
  1814. + This program is distributed in the hope that it will be useful,
  1815. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  1816. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1817. + GNU General Public License for more details.
  1818. + You should have received a copy of the GNU General Public License
  1819. + along with this program; if not, write to the Free Software
  1820. + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  1821. + #include "defs.h"
  1822. + #include "bfd.h"
  1823. + #include <time.h> /* For time_t in libbfd.h.  */
  1824. + #include <sys/types.h> /* For time_t, if not in time.h.  */
  1825. + #include "libbfd.h"
  1826. + #include "libamiga.h"
  1827. + #include "symtab.h"
  1828. + #include "symfile.h"
  1829. + #include "objfiles.h"
  1830. + #include "buildsym.h"
  1831. + #include "stabsread.h"
  1832. + #include "gdb-stabs.h"
  1833. + #include "complaints.h"
  1834. + #include <string.h>
  1835. + #include "demangle.h"
  1836. + #include <sys/file.h>
  1837. + #include "aout/aout64.h"
  1838. + /* Various things we might complain about... */
  1839. + static void
  1840. + amiga_symfile_init PARAMS ((struct objfile *));
  1841. + static void
  1842. + amiga_new_init PARAMS ((struct objfile *));
  1843. + extern void
  1844. + amiga_symfile_read PARAMS ((struct objfile *, struct section_offsets *, int));
  1845. + static void
  1846. + amiga_symfile_finish PARAMS ((struct objfile *));
  1847. + static void
  1848. + free_amigainfo PARAMS ((PTR));
  1849. + static struct section_offsets *
  1850. + amiga_symfile_offsets PARAMS ((struct objfile *, CORE_ADDR));
  1851. + static void
  1852. + record_minimal_symbol PARAMS ((char *, CORE_ADDR,
  1853. +                    enum minimal_symbol_type,
  1854. +                    struct objfile *));
  1855. + static void
  1856. + record_minimal_symbol (name, address, ms_type, objfile)
  1857. +      char *name;
  1858. +      CORE_ADDR address;
  1859. +      enum minimal_symbol_type ms_type;
  1860. +      struct objfile *objfile;
  1861. + {
  1862. +   name = obsavestring (name, strlen (name), &objfile -> symbol_obstack);
  1863. +   prim_record_minimal_symbol (name, address, ms_type, objfile);
  1864. + }
  1865. + /* This cleans up the objfile's sym_stab_info pointer, and the chain of
  1866. +    stab_section_info's, that might be dangling from it.  */
  1867. + static void
  1868. + free_amigainfo (objp)
  1869. +      PTR objp;
  1870. + {
  1871. +   struct objfile *objfile = (struct objfile *)objp;
  1872. +   struct dbx_symfile_info *dbxinfo = (struct dbx_symfile_info *)
  1873. +                      objfile->sym_stab_info;
  1874. +   struct stab_section_info *ssi, *nssi;
  1875. +   ssi = dbxinfo->stab_section_info;
  1876. +   while (ssi)
  1877. +     {
  1878. +       nssi = ssi->next;
  1879. +       mfree (objfile->md, ssi);
  1880. +       ssi = nssi;
  1881. +     }
  1882. +   dbxinfo->stab_section_info = 0;    /* Just say No mo info about this.  */
  1883. + }
  1884. + /* Initialize anything that needs initializing when a completely new symbol
  1885. +    file is specified (not just adding some symbols from another file, e.g. a
  1886. +    shared library).
  1887. +    We reinitialize buildsym, since we may be reading stabs from an amigados file.  */
  1888. + static void
  1889. + amiga_new_init (ignore)
  1890. +      struct objfile *ignore;
  1891. + {
  1892. +   stabsread_new_init ();
  1893. +   buildsym_new_init ();
  1894. + }
  1895. + /* Perform any local cleanups required when we are done with a particular
  1896. +    objfile.  I.E, we are in the process of discarding all symbol information
  1897. +    for an objfile, freeing up all memory held for it, and unlinking the
  1898. +    objfile struct from the global list of known objfiles. */
  1899. + static void
  1900. + amiga_symfile_finish (objfile)
  1901. +      struct objfile *objfile;
  1902. + {
  1903. +   if (objfile -> sym_stab_info != NULL)
  1904. +     {
  1905. +       mfree (objfile -> md, objfile -> sym_stab_info);
  1906. +     }
  1907. + }
  1908. + /* Amigados specific initialization routine for reading symbols.
  1909. +    It is passed a pointer to a struct sym_fns which contains, among other
  1910. +    things, the BFD for the file whose symbols are being read, and a slot for
  1911. +    a pointer to "private data" which we can fill with goodies.
  1912. +    This routine is almost a complete ripoff of dbx_symfile_init.  The
  1913. +    common parts of these routines should be extracted and used instead of
  1914. +    duplicating this code.  FIXME. */
  1915. + static void
  1916. + amiga_symfile_init (objfile)
  1917. +      struct objfile *objfile;
  1918. + {
  1919. +   int val;
  1920. +   bfd *sym_bfd = objfile->obfd;
  1921. +   char *name = bfd_get_filename (sym_bfd);
  1922. +   /* Allocate struct to keep track of the symfile */
  1923. +   objfile->sym_stab_info = (PTR)
  1924. +     xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info));
  1925. +   memset ((PTR) objfile->sym_stab_info, 0, sizeof (struct dbx_symfile_info));
  1926. +   /* FIXME POKING INSIDE BFD DATA STRUCTURES */
  1927. + #define    STRING_TABLE_OFFSET    adata(sym_bfd).str_filepos
  1928. + #define    SYMBOL_TABLE_OFFSET    adata(sym_bfd).sym_filepos
  1929. +   /* FIXME POKING INSIDE BFD DATA STRUCTURES */
  1930. +   DBX_SYMFILE_INFO (objfile)->stab_section_info = NULL;
  1931. +   DBX_TEXT_SECT (objfile) = bfd_get_section_by_name (sym_bfd, ".text");
  1932. +   if (!DBX_TEXT_SECT (objfile))
  1933. +     error ("Can't find .text section in symbol file");
  1934. +   /* FIXME: I suspect this should be external_nlist.  The size of host
  1935. +      types like long and bfd_vma should not affect how we read the
  1936. +      file.  */
  1937. +   DBX_SYMBOL_SIZE (objfile) = sizeof (struct internal_nlist);
  1938. +   DBX_SYMCOUNT (objfile) = AMIGA_DATA(sym_bfd)->symtab_size
  1939. +     / DBX_SYMBOL_SIZE (objfile);
  1940. +   DBX_SYMTAB_OFFSET (objfile) = SYMBOL_TABLE_OFFSET;
  1941. +   /* Read the string table and stash it away in the psymbol_obstack.  It is
  1942. +      only needed as long as we need to expand psymbols into full symbols,
  1943. +      so when we blow away the psymbol the string table goes away as well.
  1944. +      Note that gdb used to use the results of attempting to malloc the
  1945. +      string table, based on the size it read, as a form of sanity check
  1946. +      for botched byte swapping, on the theory that a byte swapped string
  1947. +      table size would be so totally bogus that the malloc would fail.  Now
  1948. +      that we put in on the psymbol_obstack, we can't do this since gdb gets
  1949. +      a fatal error (out of virtual memory) if the size is bogus.  We can
  1950. +      however at least check to see if the size is zero or some negative
  1951. +      value. */
  1952. +   DBX_STRINGTAB_SIZE (objfile) = AMIGA_DATA (sym_bfd)->stringtab_size;
  1953. +   if (DBX_SYMCOUNT (objfile) == 0
  1954. +       || DBX_STRINGTAB_SIZE (objfile) == 0)
  1955. +     return;
  1956. +   if (DBX_STRINGTAB_SIZE (objfile) <= 0
  1957. +       || DBX_STRINGTAB_SIZE (objfile) > bfd_get_size (sym_bfd))
  1958. +     error ("ridiculous string table size (%d bytes).",
  1959. +        DBX_STRINGTAB_SIZE (objfile));
  1960. +   DBX_STRINGTAB (objfile) =
  1961. +     (char *) obstack_alloc (&objfile -> psymbol_obstack,
  1962. +                 DBX_STRINGTAB_SIZE (objfile));
  1963. +   /* Now read in the string table in one big gulp.  */
  1964. +   val = bfd_seek (sym_bfd, STRING_TABLE_OFFSET, L_SET);
  1965. +   if (val < 0)
  1966. +     perror_with_name (name);
  1967. +   val = bfd_read (DBX_STRINGTAB (objfile), DBX_STRINGTAB_SIZE (objfile), 1,
  1968. +           sym_bfd);
  1969. +   if (val == 0)
  1970. +     error ("End of file reading string table");
  1971. +   else if (val < 0)
  1972. +     /* It's possible bfd_read should be setting bfd_error, and we should be
  1973. +        checking that.  But currently it doesn't set bfd_error.  */
  1974. +     perror_with_name (name);
  1975. +   else if (val != DBX_STRINGTAB_SIZE (objfile))
  1976. +     error ("Short read reading string table");
  1977. + }
  1978. + /* Amiga specific parsing routine for section offsets.
  1979. +    Plain and simple for now.  */
  1980. + static struct section_offsets *
  1981. + amiga_symfile_offsets (objfile, addr)
  1982. +      struct objfile *objfile;
  1983. +      CORE_ADDR addr;
  1984. + {
  1985. +   struct section_offsets *section_offsets;
  1986. +   int i;
  1987. +   objfile->num_sections = SECT_OFF_MAX;
  1988. +   section_offsets = (struct section_offsets *)
  1989. +     obstack_alloc (&objfile -> psymbol_obstack,
  1990. +            sizeof (struct section_offsets)
  1991. +            + sizeof (section_offsets->offsets) * (SECT_OFF_MAX-1));
  1992. +   for (i = 0; i < SECT_OFF_MAX; i++)
  1993. +     ANOFFSET (section_offsets, i) = addr;
  1994. +   return section_offsets;
  1995. + }
  1996. + /* Register that we are able to handle Amigados object file formats.  */
  1997. + static struct sym_fns amiga_sym_fns =
  1998. + {
  1999. +   bfd_target_amiga_flavour,
  2000. +   amiga_new_init,    /* sym_new_init: init anything gbl to entire symtab */
  2001. +   amiga_symfile_init,    /* sym_init: read initial info, setup for sym_read() */
  2002. +   amiga_symfile_read,    /* sym_read: read a symbol file into symtab */
  2003. +   amiga_symfile_finish,    /* sym_finish: finished with file, cleanup */
  2004. +   amiga_symfile_offsets,/* sym_offsets:  Translate ext. to int. relocation */
  2005. +   NULL            /* next: pointer to next struct sym_fns */
  2006. + };
  2007. + void
  2008. + _initialize_amigaread ()
  2009. + {
  2010. +   add_symtab_fns (&amiga_sym_fns);
  2011. + }
  2012. diff -rc --new-file /src/baseline/gdb-4.12/gdb/config/m68k/amigados.mh gdb-4.12/gdb/config/m68k/amigados.mh
  2013. *** /src/baseline/gdb-4.12/gdb/config/m68k/amigados.mh    Thu Jan  1 00:00:00 1970
  2014. --- gdb-4.12/gdb/config/m68k/amigados.mh    Fri Jun 17 07:33:50 1994
  2015. ***************
  2016. *** 0 ****
  2017. --- 1,14 ----
  2018. + # Host: Commodore Amiga running AmigaDOS.
  2019. + NAT_FILE= nm-amigados.h
  2020. + NATDEPFILES=
  2021. + XDEPFILES=
  2022. + XM_FILE= xm-amigados.h
  2023. + REGEX=regex.o
  2024. + REGEX1=regex.o
  2025. + # Use GNU C compiler
  2026. + CC = gcc
  2027. + # Use GNU install
  2028. + INSTALL = /bin/install -c
  2029. + # Don't use the mmalloc library, there is no sbrk() or mmap().
  2030. + MMALLOC=
  2031. + MMALLOC_DISABLE = -DNO_MMALLOC
  2032. diff -rc --new-file /src/baseline/gdb-4.12/gdb/config/m68k/amigados.mt gdb-4.12/gdb/config/m68k/amigados.mt
  2033. *** /src/baseline/gdb-4.12/gdb/config/m68k/amigados.mt    Thu Jan  1 00:00:00 1970
  2034. --- gdb-4.12/gdb/config/m68k/amigados.mt    Fri Jun 17 07:33:51 1994
  2035. ***************
  2036. *** 0 ****
  2037. --- 1,3 ----
  2038. + # Target: Commodore Amiga running AmigaDOS
  2039. + TDEPFILES= m68k-pinsn.o exec.o m68k-tdep.o
  2040. + TM_FILE= tm-amigados.h
  2041. diff -rc --new-file /src/baseline/gdb-4.12/gdb/config/m68k/nm-amigados.h gdb-4.12/gdb/config/m68k/nm-amigados.h
  2042. *** /src/baseline/gdb-4.12/gdb/config/m68k/nm-amigados.h    Thu Jan  1 00:00:00 1970
  2043. --- gdb-4.12/gdb/config/m68k/nm-amigados.h    Fri Jun 17 07:33:52 1994
  2044. ***************
  2045. *** 0 ****
  2046. --- 1,26 ----
  2047. + /* Native-dependent definitions for Commodore Amiga running AmigaDOS.
  2048. +    Copyright 1994 Free Software Foundation, Inc.
  2049. +    Written by Fred Fish (fnf@cygnus.com)
  2050. + This file is part of GDB.
  2051. + This program is free software; you can redistribute it and/or modify
  2052. + it under the terms of the GNU General Public License as published by
  2053. + the Free Software Foundation; either version 2 of the License, or
  2054. + (at your option) any later version.
  2055. + This program is distributed in the hope that it will be useful,
  2056. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  2057. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2058. + GNU General Public License for more details.
  2059. + You should have received a copy of the GNU General Public License
  2060. + along with this program; if not, write to the Free Software
  2061. + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  2062. + #ifndef NM_AMIGADOS_H
  2063. + #define NM_AMIGADOS_H
  2064. + /* Stuff goes here... */
  2065. + #endif /* NM_AMIGADOS_H */
  2066. diff -rc --new-file /src/baseline/gdb-4.12/gdb/config/m68k/tm-amigados.h gdb-4.12/gdb/config/m68k/tm-amigados.h
  2067. *** /src/baseline/gdb-4.12/gdb/config/m68k/tm-amigados.h    Thu Jan  1 00:00:00 1970
  2068. --- gdb-4.12/gdb/config/m68k/tm-amigados.h    Fri Jun 17 07:33:53 1994
  2069. ***************
  2070. *** 0 ****
  2071. --- 1,64 ----
  2072. + /* Macro definitions for GDB on a Commodore Amiga running AmigaDOS.
  2073. +    Copyright (C) 1994, Free Software Foundation, Inc.
  2074. +    Written by Fred Fish at Cygnus Support (fnf@cygnus.com)
  2075. + This file is part of GDB.
  2076. + This program is free software; you can redistribute it and/or modify
  2077. + it under the terms of the GNU General Public License as published by
  2078. + the Free Software Foundation; either version 2 of the License, or
  2079. + (at your option) any later version.
  2080. + This program is distributed in the hope that it will be useful,
  2081. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  2082. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2083. + GNU General Public License for more details.
  2084. + You should have received a copy of the GNU General Public License
  2085. + along with this program; if not, write to the Free Software
  2086. + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  2087. + /* Define BPT_VECTOR if it is different than the default.
  2088. +    This is the vector number used by traps to indicate a breakpoint. */
  2089. + #define BPT_VECTOR 0x1
  2090. + /* How much to decrement the PC after a trap.  Depends on kernel. */
  2091. + #define DECR_PC_AFTER_BREAK 0        /* No decrement required */
  2092. + /* Use the alternate method of determining valid frame chains. */
  2093. + #define FRAME_CHAIN_VALID_ALTERNATE
  2094. + #include "m68k/tm-m68k.h"
  2095. + /* Offsets (in target ints) into jmp_buf.  Not defined in any system header
  2096. +    file, so we have to step through setjmp/longjmp with a debugger and figure
  2097. +    them out.  As a double check, note that <setjmp> defines _JBLEN as 13,
  2098. +    which matches the number of elements we see saved by setjmp(). */
  2099. + #define JB_ELEMENT_SIZE sizeof(int)    /* jmp_buf[_JBLEN] is array of ints */
  2100. + #define JB_D2    0
  2101. + #define JB_D3    1
  2102. + #define JB_D4    2
  2103. + #define JB_D5    3
  2104. + #define JB_D6    4
  2105. + #define JB_D7    5
  2106. + #define JB_A1    6
  2107. + #define JB_A2    7
  2108. + #define JB_A3    8
  2109. + #define JB_A4    9
  2110. + #define JB_A5    10
  2111. + #define JB_A6    11
  2112. + #define JB_A7    12
  2113. + #define JB_PC    JB_A1    /* Setjmp()'s return PC saved in A1 */
  2114. + /* Figure out where the longjmp will land.  Slurp the args out of the stack.
  2115. +    We expect the first arg to be a pointer to the jmp_buf structure from which
  2116. +    we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
  2117. +    This routine returns true on success */
  2118. + #define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
  2119. diff -rc --new-file /src/baseline/gdb-4.12/gdb/config/m68k/xm-amigados.h gdb-4.12/gdb/config/m68k/xm-amigados.h
  2120. *** /src/baseline/gdb-4.12/gdb/config/m68k/xm-amigados.h    Thu Jan  1 00:00:00 1970
  2121. --- gdb-4.12/gdb/config/m68k/xm-amigados.h    Fri Jun 17 07:33:53 1994
  2122. ***************
  2123. *** 0 ****
  2124. --- 1,23 ----
  2125. + /* Macro definitions for GDB on a Commodore Amiga running AmigaDOS.
  2126. +    Copyright 1994 Free Software Foundation, Inc.
  2127. +    Written by Fred Fish at Cygnus Support (fnf@cygnus.com)
  2128. + This file is part of GDB.
  2129. + This program is free software; you can redistribute it and/or modify
  2130. + it under the terms of the GNU General Public License as published by
  2131. + the Free Software Foundation; either version 2 of the License, or
  2132. + (at your option) any later version.
  2133. + This program is distributed in the hope that it will be useful,
  2134. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  2135. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2136. + GNU General Public License for more details.
  2137. + You should have received a copy of the GNU General Public License
  2138. + along with this program; if not, write to the Free Software
  2139. + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  2140. + /* Pick up most of what we need from the generic m68k host include file. */
  2141. + #include "m68k/xm-m68k.h"
  2142. diff -rc --new-file /src/baseline/gdb-4.12/gdb/configure.in gdb-4.12/gdb/configure.in
  2143. *** /src/baseline/gdb-4.12/gdb/configure.in    Thu Feb  3 13:05:09 1994
  2144. --- gdb-4.12/gdb/configure.in    Fri Jun 17 07:33:54 1994
  2145. ***************
  2146. *** 68,73 ****
  2147. --- 68,74 ----
  2148.   m68*-apollo*-bsd*)    gdb_host=apollo68b ;;
  2149.   m68*-att-*)        gdb_host=3b1 ;;
  2150.   m68*-bull*-sysv*)    gdb_host=dpx2 ;;
  2151. + m68*-cbm-amigados*)    gdb_host=amigados ;;
  2152.   m68*-cbm-sysv4*)    gdb_host=amix ;;
  2153.   m68*-hp-bsd*)        gdb_host=hp300bsd ;;
  2154.   m68*-hp-hpux*)        gdb_host=hp300hpux ;;
  2155. ***************
  2156. *** 221,226 ****
  2157. --- 222,228 ----
  2158.   m68000-*-sunos3*)    gdb_target=sun2os3 ;;
  2159.   m68000-*-sunos4*)    gdb_target=sun2os4 ;;
  2160.   
  2161. + m68*-cbm-amigados*)    gdb_target=amigados ;;
  2162.   m68*-cbm-sysv4*)    gdb_target=amix ;;
  2163.   m68*-bull-sysv*)    gdb_target=dpx2 ;;
  2164.   m68*-hp-bsd*)        gdb_target=hp300bsd ;;
  2165. diff -rc --new-file /src/baseline/gdb-4.12/gdb/dbxread.c gdb-4.12/gdb/dbxread.c
  2166. *** /src/baseline/gdb-4.12/gdb/dbxread.c    Thu Feb  3 12:41:07 1994
  2167. --- gdb-4.12/gdb/dbxread.c    Fri Jun 17 07:33:55 1994
  2168. ***************
  2169. *** 2146,2151 ****
  2170. --- 2146,2161 ----
  2171.     dbx_symfile_read (objfile, section_offsets, mainline);
  2172.   }
  2173.   
  2174. + /* Called from amigaread.c  */
  2175. + void
  2176. + amiga_symfile_read (objfile, section_offsets, mainline)
  2177. +      struct objfile *objfile;
  2178. +      struct section_offsets *section_offsets;
  2179. +      int mainline;
  2180. + {
  2181. +   dbx_symfile_read (objfile, section_offsets, mainline);
  2182. + }
  2183.   /* Parse the user's idea of an offset for dynamic linking, into our idea
  2184.      of how to represent it for fast symbol reading.  */
  2185.   
  2186. diff -rc --new-file /src/baseline/gdb-4.12/libiberty/config/mh-amigados gdb-4.12/libiberty/config/mh-amigados
  2187. *** /src/baseline/gdb-4.12/libiberty/config/mh-amigados    Thu Jan  1 00:00:00 1970
  2188. --- gdb-4.12/libiberty/config/mh-amigados    Fri Jun 17 07:33:56 1994
  2189. ***************
  2190. *** 0 ****
  2191. --- 1,6 ----
  2192. + # Host makefile fragment for Commodore Amiga running AmigaDOS.
  2193. + # Use GNU C.  There is no default system compiler.
  2194. + CC=gcc
  2195. + # Don't use -g since we don't really support it yet.  Use -O instead though.
  2196. + CFLAGS=-O
  2197. diff -rc --new-file /src/baseline/gdb-4.12/libiberty/config.table gdb-4.12/libiberty/config.table
  2198. *** /src/baseline/gdb-4.12/libiberty/config.table    Thu Feb  3 12:48:12 1994
  2199. --- gdb-4.12/libiberty/config.table    Fri Jun 17 07:33:57 1994
  2200. ***************
  2201. *** 19,22 ****
  2202. --- 19,23 ----
  2203.     *-*-solaris2*)    frag=mh-sysv4 ;;
  2204.     *-*-sysv4*)        frag=mh-sysv4 ;;
  2205.     *-*-sysv*)        frag=mh-sysv ;;
  2206. +   *-*-amigados*)    frag=mh-amigados ;;
  2207.   esac
  2208. diff -rc --new-file /src/baseline/gdb-4.12/mmalloc/config/mh-amigados gdb-4.12/mmalloc/config/mh-amigados
  2209. *** /src/baseline/gdb-4.12/mmalloc/config/mh-amigados    Thu Jan  1 00:00:00 1970
  2210. --- gdb-4.12/mmalloc/config/mh-amigados    Fri Jun 17 07:33:58 1994
  2211. ***************
  2212. *** 0 ****
  2213. --- 1,7 ----
  2214. + # Host configuration for Commodore Amiga running AmigaDOS.
  2215. + # We don't actually use libmmalloc.a, since there is no sbrk(),
  2216. + # but this allows us to compile it (and then ignore it).
  2217. + CC=gcc
  2218. + # We don't need -g yet, so do -O instead.
  2219. + CFLAGS=-O
  2220. diff -rc --new-file /src/baseline/gdb-4.12/mmalloc/configure.in gdb-4.12/mmalloc/configure.in
  2221. *** /src/baseline/gdb-4.12/mmalloc/configure.in    Thu Feb  3 12:48:23 1994
  2222. --- gdb-4.12/mmalloc/configure.in    Fri Jun 17 07:33:59 1994
  2223. ***************
  2224. *** 15,20 ****
  2225. --- 15,21 ----
  2226.     *-*-solaris2*)    host_makefile_frag=config/mh-sysv4 ;;
  2227.     *-*-sunos4*)        host_makefile_frag=config/mh-sunos4 ;;
  2228.     *-*-sysv4*)        host_makefile_frag=config/mh-sysv4 ;;
  2229. +   *-*-amigados*)    host_makefile_frag=config/mh-amigados ;;
  2230.   esac
  2231.   
  2232.   # per-target:
  2233. diff -rc --new-file /src/baseline/gdb-4.12/readline/config/mh-amigados gdb-4.12/readline/config/mh-amigados
  2234. *** /src/baseline/gdb-4.12/readline/config/mh-amigados    Thu Jan  1 00:00:00 1970
  2235. --- gdb-4.12/readline/config/mh-amigados    Fri Jun 17 07:34:00 1994
  2236. ***************
  2237. *** 0 ****
  2238. --- 1,10 ----
  2239. + # Host makefile fragment for Commodore Amiga running AmigaDOS.
  2240. + # Use the GNU C compiler.
  2241. + CC=gcc
  2242. + # Don't use -g for now, it isn't useful and may just bloat the
  2243. + # executable.  But do optimize.
  2244. + CFLAGS=-O
  2245. + # Use the GNU install program.
  2246. + INSTALL_PROG = /bin/install -c
  2247. + # The system doesn't distinguish users.
  2248. + H_CFLAGS = -DNOT_MULTIUSER
  2249. diff -rc --new-file /src/baseline/gdb-4.12/readline/configure.in gdb-4.12/readline/configure.in
  2250. *** /src/baseline/gdb-4.12/readline/configure.in    Thu Feb  3 12:47:47 1994
  2251. --- gdb-4.12/readline/configure.in    Fri Jun 17 07:34:00 1994
  2252. ***************
  2253. *** 28,33 ****
  2254. --- 28,34 ----
  2255.     i[34]86-*-sco*)    host_makefile_frag=config/mh-sco; files=sysdep-sco.h ;;
  2256.     i[34]86-*-isc*)    host_makefile_frag=config/mh-isc ;;
  2257.     m68k-apollo-sysv*)    host_makefile_frag=config/mh-apollo68v ;;    
  2258. +   m68k-cbm-amigados*)    host_makefile_frag=config/mh-amigados ;;
  2259.     *-*-sysv*)        host_makefile_frag=config/mh-sysv ;;
  2260.     *-*-m88kbcs*)        host_makefile_frag=config/mh-sysv ;;
  2261.     i[34]86-*-linux*)    host_makefile_frag=config/mh-posix ;;
  2262. diff -rc --new-file /src/baseline/gdb-4.12/readline/readline.c gdb-4.12/readline/readline.c
  2263. *** /src/baseline/gdb-4.12/readline/readline.c    Thu Feb  3 12:47:49 1994
  2264. --- gdb-4.12/readline/readline.c    Fri Jun 17 07:34:02 1994
  2265. ***************
  2266. *** 180,185 ****
  2267. --- 180,190 ----
  2268.   #include <pwd.h>
  2269.   #endif /* __MSDOS__ */
  2270.   
  2271. + #ifdef amigados
  2272. + #define tcflow(a,b)    /* Hack, this is missing from ixemul.library */
  2273. + #define tcsetattr(a,b,c)    /* But this isn't? */
  2274. + #endif
  2275.   #if defined (USG) && !defined (isc386) && !defined (sgi)
  2276.   struct passwd *getpwuid (), *getpwent ();
  2277.   #endif
  2278. ***************
  2279. *** 4135,4141 ****
  2280.        int state;
  2281.        char *text;
  2282.   {
  2283. ! #ifdef __GO32__
  2284.     return (char *)NULL;
  2285.   #else /* !__GO32__ */
  2286.     static char *username = (char *)NULL;
  2287. --- 4140,4146 ----
  2288.        int state;
  2289.        char *text;
  2290.   {
  2291. ! #if defined (__GO32__) || defined (NOT_MULTIUSER)
  2292.     return (char *)NULL;
  2293.   #else /* !__GO32__ */
  2294.     static char *username = (char *)NULL;
  2295.