segv в _stack_grow () на Solaris 11 с developerstudio12.6

У меня есть приложение C, скомпилированное с помощью cc и связанное с CC, которое прекрасно работает, когда используется solarisstudio12.3, но segvs в _stack_grow (), когда версия компилятора изменяется на developerstudio12.6 и флаг компоновщика -std = c ++ 03 равен используемый.

Разборка функции показывает

(dbx) dis func1
0x000000010048dae0: func1       : save     %sp, -176, %sp
0x000000010048dae4: func1+0x0004: sethi    %hi(0x3c00), %l0
0x000000010048dae8: func1+0x0008: btog     -400, %l0
0x000000010048daec: func1+0x000c: call     _stack_grow [PLT]   ! 0x101d87640

входя в отладчик я вижу это

t@1 (l@1) stopped in (unknown) at 0x0000000101d87640
0x0000000101d87640: _stack_grow        [PLT]: nop
(dbx) stepi
t@1 (l@1) stopped in (unknown) at 0x0000000101d87644
0x0000000101d87644: _stack_grow+0x0004 [PLT]: sethi    %hi(0x82cb0c00), %g5
(dbx) stepi
t@1 (l@1) stopped in (unknown) at 0x0000000101d87648
0x0000000101d87648: _stack_grow+0x0008 [PLT]: xnor     %g5, 879, %g1
(dbx) stepi
t@1 (l@1) stopped in (unknown) at 0x0000000101d8764c
0x0000000101d8764c: _stack_grow+0x000c [PLT]: jmp      %g1
(dbx) stepi
t@1 (l@1) stopped in (unknown) at 0x0000000101d87650
0x0000000101d87650: _stack_grow+0x0010 [PLT]: nop
(dbx) stepi
t@1 (l@1) stopped in _stack_grow at 0xffffffff7d34f090

и наконец

t@1 (l@1) signal SEGV (no mapping at the fault address) in _stack_grow at 0xffffffff7d34f0d8
0xffffffff7d34f0d8: _stack_grow+0x0048: ldub     [%o1 - 1], %g0

Любопытно, что разные адреса для _stack_grow (): 0x0000000101d87640 и 0xffffffff7d34f090. Почему разные?

Любые комментарии будут с благодарностью.

-3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]