Assembler error - can't resolve '.text' {.text setion}...

I’m trying to compile CVS version of octave and am running into some errors. A snipped version of the errors is below. I’m not sure if it’s a compile error or syntax error.

/tmp/pgCCeaaaalmlaw.s: Assembler messages:
/tmp/pgCCeaaaalmlaw.s:64033: Error: can’t resolve .text' {.text section} - …Dcfb38’ {.gnu.linkonce.t.read_mat5_integer_data__tm__23_20octave_int__tm__3_Sc__FRQ2_3std52basic_istream__tm__31_cQ2_3std20char_traits__tm__2_cPZ1Zib14mat5_data_type_v section}
/tmp/pgCCeaaaalmlaw.s:64044: Error: can’t resolve .text' {.text section} - …Dcfb39’ {.gnu.linkonce.t.read_mat5_integer_data__tm__22_19octave_int__tm__2_s__FRQ2_3std52basic_istream__tm__31_cQ2_3std20char_traits__tm__2_cPZ1Zib14mat5_data_type_v section}

  • snip to the other function causeing error *

/tmp/pgCCeaaaalmlaw.s:64209: Error: can’t resolve .text' {.text section} - …Dcfb54’ {.gnu.linkonce.t.write_mat5_integer_data__tm__23_20octave_int__tm__3_Sc__FRQ2_3std52basic_ostream__tm__31_cQ2_3std20char_traits__tm__2_cPCZ1ZiT3_v section}
/tmp/pgCCeaaaalmlaw.s:64220: Error: can’t resolve .text' {.text section} - …Dcfb55’ {.gnu.linkonce.t.write_mat5_integer_data__tm__22_19octave_int__tm__2_s__FRQ2_3std52basic_ostream__tm__31_cQ2_3std20char_traits__tm__2_cPCZ1ZiT3_v section}

  • snip to code *

template
void
read_mat5_integer_data (std::istream& is, T *m, int count, bool swap,
mat5_data_type type)
{

#define READ_INTEGER_DATA(TYPE, swap, data, size, len, stream)
do
{
if (len > 0)
{
volatile TYPE *ptr = X_CAST (volatile TYPE *, data);
stream.read (X_CAST (char *,ptr), size * len);
if (swap)
swap_bytes< size > (ptr, len);
TYPE tmp = ptr[0];
for (int i = len - 1; i > 0; i–)
data = ptr;
data[0] = tmp;
}
}
while (0)

switch (type)
{
case miINT8:
READ_INTEGER_DATA (signed char, swap, m, 1, count, is);
break;

case miUINT8:
READ_INTEGER_DATA (unsigned char, swap, m, 1, count, is);
break;

case miINT16:
READ_INTEGER_DATA (signed TWO_BYTE_INT, swap, m, 2, count, is);
break;

case miUINT16:
READ_INTEGER_DATA (unsigned TWO_BYTE_INT, swap, m, 2, count, is);
break;

case miINT32:
READ_INTEGER_DATA (signed FOUR_BYTE_INT, swap, m, 4, count, is);
break;

case miUINT32:
READ_INTEGER_DATA (unsigned FOUR_BYTE_INT, swap, m, 4, count, is);
break;

case miSINGLE:
case miRESERVE1:
case miDOUBLE:
case miRESERVE2:
case miRESERVE3:
break;

case miINT64:
#ifdef EIGHT_BYTE_INT
READ_INTEGER_DATA (signed EIGHT_BYTE_INT, swap, m, 8, count, is);
#endif
break;

case miUINT64:
#ifdef EIGHT_BYTE_INT
READ_INTEGER_DATA (unsigned EIGHT_BYTE_INT, swap, m, 8, count, is);
#endif
break;
case miMATRIX:
default:
break;
}

#undef READ_INTEGER_DATA

}

template void read_mat5_integer_data (std::istream& is, octave_int8 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_int16 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_int32 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_int64 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_uint8 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_uint16 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_uint32 *m,
int count, bool swap,
mat5_data_type type);
template void read_mat5_integer_data (std::istream& is, octave_uint64 *m,
int count, bool swap,
mat5_data_type type);

template void read_mat5_integer_data (std::istream& is, int *m,
int count, bool swap,
mat5_data_type type);




The write function is similar.

We will have to try to build octave here and see if we can reproduce. Do you also see this problem in the latest non-cvs version?

Yes, octave 2.1.72 and the current CVS both give the same error.

I’m using 6.1-2 64 bit. On AMD x2 3800.

Can you tell me what options you are using to configure? I’m getting a few other errors.

./configure CC=pgcc CXX=pgCC F77=pgf77 FC=pgf95 CFLAGS="-fpic -O3 -Mipa -fastsse" FFLAGS="-fpic -O3 -Mipa -fastsse" CXXFLAGS="-fpic -O3 -Mipa -fastsse" LDLFAGS="-fpic" --prefix=/usr/local/octave --exec-prefix=/usr/local/octave --with-blas=/usr/pgi/linux86-64/6.1/lib/libacml.a --enable-shared --enable-dl

I ran into some problems with glob.h. I think I ended up using
#define __size_t size_t
for the compilation.

I also ran into problems with the pow function not having
double pow(double,int). ALthough not the best solution I just promoted the ints to doubles. They did that due to the faster nature of x^y when y is an integer.

Okay, thanks. I was able to reproduce this. Stay tuned.

We’ve identified and fixed this problem. I don’t know of any workarounds
other than not compiling with -fpic, but that may not be acceptable. You should expect to see the fix in Rel 6.1-3, which has a targetted release date of March 2nd.

Glad to here it’s been fixed for the next release and that’s not too far off. Not using -fpic wouldn’t be useful as linking shared libraries against static ones without pic code wouldn’t work. Thanks for all the help.

I sent in a bug report of a crash with pgf90 -g on windows. tech support is supposed to be looking into it. Have you heard of any progress regarding that issue? I know deugging is not supported and that’s okay, but autoconf checks this ability and having to click okay on every configure of the software when it happes is annoying and prohibits large unattended builds.

Chris