brunner@bullhead.uucp (08/09/89)
Subject: Fix for ld(1) stabs relocation error
Index: /usr/src/bin/ld.c
Description:
correct relocation error on stabs for functions
Fix:
Apply the following patch
*** ld.c Tue Aug 8 14:16:03 1989
--- ld.c.fix Tue Aug 8 14:16:17 1989
***************
*** 1,5 ****
/*
! * P_R_P_Q_# (C) COPYRIGHT IBM CORPORATION 1988
* LICENSED MATERIALS - PROPERTY OF IBM
* REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083
*/
--- 1,5 ----
/*
! * P_R_P_Q_# (C) COPYRIGHT IBM CORPORATION 1988,1989
* LICENSED MATERIALS - PROPERTY OF IBM
* REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083
*/
***************
*** 9,15 ****
* specifies the terms and conditions for redistribution.
*/
#ifndef lint
! static char rcsid[] = "$Header: ld.c,v 12.0 88/11/09 16:36:26 root dec88 $";
#endif
/* $Source: /site/src/bin/RCS/ld.c,v $ */
--- 9,15 ----
* specifies the terms and conditions for redistribution.
*/
#ifndef lint
! static char rcsid[] = "$Header: ld.c,v 12.1 89/04/06 12:41:54 james Exp $";
#endif
/* $Source: /site/src/bin/RCS/ld.c,v $ */
***************
*** 1738,1745 ****
cursym.n_un.n_name = curstr + cursym.n_un.n_strx;
}
/* inline expansion of symreloc() */
- switch (cursym.n_type & 017) {
case N_TEXT:
case N_EXT+N_TEXT:
cursym.n_value += ctrel;
--- 1738,1754 ----
cursym.n_un.n_name = curstr + cursym.n_un.n_strx;
}
/* inline expansion of symreloc() */
+ #ifndef ibm370
+ /* In the RT linkage, function addresses are in data, not text.
+ * The following kluge on n_type relocates function stabs into data
+ * rather than text. 0x24 would have been N_FUN had we included stabs.h.
+ */
+ switch ((cursym.n_type == 0x24) ? N_DATA : cursym.n_type & 0x0f) {
+ #endif ibm370
+ #ifdef ibm370
+ switch (cursym.n_type & 0x0f) {
+ #endif ibm370
case N_TEXT:
case N_EXT+N_TEXT:
cursym.n_value += ctrel;
***************
*** 2543,2551 ****
symreloc()
{
! if(funding) return;
! switch (cursym.n_type & 017) {
!
case N_TEXT:
case N_EXT+N_TEXT:
cursym.n_value += ctrel;
--- 2552,2568 ----
symreloc()
{
! if(funding) return;
! #ifndef ibm370
! /* In the RT linkage, function addresses are in data, not text.
! * The following kluge on n_type relocates function stabs into data
! * rather that text. 0x24 would have been N_FUN had we included stabs.h.
! */
! switch ((cursym.n_type == 0x24) ? N_DATA : cursym.n_type & 0x0f) {
! #endif ibm370
! #ifdef ibm370
! switch (cursym.n_type & 0x0f) {
! #endif ibm370
case N_TEXT:
case N_EXT+N_TEXT:
cursym.n_value += ctrel;