Anonymous
А какая может быть причина?
Anatoly
ну ты покажи выхлоп этой команды
Anonymous
Не дома, но проверял до этого. Chown мой. Права чтение, исполнение, запись есть. Что ещё это тебе дать может?
Anatoly
ничего, должен быть исполнен
Anonymous
Можешь ещё strings/ldd/nm/od?
Anatoly
что-то ты определенно делаешь не так
Anatoly
нет
Anonymous
Именно
Anatoly
твоих данных не достаточно
Anonymous
GAS работает
Viktor
$PWD/argc ещё попробуй
Viktor
а ты уверен шо отрыгивает не a.out
Посмотри на последнюю команду
Anatoly
ну file же он определяет
Anonymous
електр🟢нік ✙🟠рчбеч ඞ
електр🟢нік ✙🟠рчбеч ඞ
а не ассемблер
Anonymous
$PWD/argc ещё попробуй
Так pwd это эта дира
Anatoly
как будет за машиной, тогда и надо смотреть
електр🟢нік ✙🟠рчбеч ඞ
шо после ассемблера смотри
Anonymous
Тогда потом, дома))
Anonymous
Спасибо за активность
Anonymous
Думал кто уже встречал
Anatoly
нет, у всех нормально)
Anonymous
Anatoly
да пади по запарке не то или не там запускаешь)
Viktor
nasm отрыгнул объектный файл, линкер отрыгнул исполняемый из отрыга насма
Anatoly
всякое бывает
Anatoly
ждем тебя за компьютером
Anatoly
и пост сюда "епта, ну я капец..."
Anonymous
Как то так делал
Anatoly
дада, я понял уже. Ты все делаешь правильно, а оно не работает :)
Anonymous
Я решил на 64бит printf вызвать
Anonymous
Через регистры
Anonymous
Ладно, дома
Anatoly
libc оно само линкует чоль?
Anatoly
да, лучше дома
електр🟢нік ✙🟠рчбеч ඞ
chmod +x argc
Anonymous
Там вроде было x
Anonymous
На ugo
Anatoly
сплошные догадки
Anonymous
$ ls -l итого 36 -rwxrwxr-x 1 lock lock 2832 май 1 11:13 test -rw-rw-r-- 1 lock lock 864 май 1 11:12 test.o -rw-rw-r-- 1 lock lock 213 май 1 11:12 test.s
Anonymous
в общем место ld стал использовать gcc, все работает
Vladimir
gcc еще цепляет всякую срань наподобие libgcc
Vladimir
неявно
Anatoly
и все работает!
Vladimir
И с ld всë работает, если всë правильно сделать
Anatoly
уверен, это так
Vladimir
Ключ -static и точку входа надо указать, как минимум
Anonymous
lock@lock:~/c/asm/tests/asm/nasm/test_printf$ nasm test.s test.s:17: error: instruction not supported in 16-bit mode test.s:18: error: instruction not supported in 16-bit mode test.s:19: error: instruction not supported in 16-bit mode test.s:20: error: symbol `..plt' undefined $ nasm -felf64 test.s $ ld test. test.o test.s $ ld test.o -o test -lc ld: warning: cannot find entry symbol _start; defaulting to 0000000000400230 $ nano test.s $ nasm -felf64 test.s $ ld test.o -o test -lc $ ./test bash: ./test: Нет такого файла или каталога $ strings test /lib/ld64.so.1 libc.so.6 printf GLIBC_2.2.5 Is: %d test.s str_format _DYNAMIC _GLOBAL_OFFSET_TABLE_ _edata printf@@GLIBC_2.2.5 _end __bss_start .symtab .strtab .shstrtab .interp .hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.plt .text .eh_frame .dynamic .got.plt .data $ file test test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, not stripped $ nm test 00000000006003b0 D __bss_start 0000000000600248 d _DYNAMIC 00000000006003b0 D _edata 00000000006003b0 D _end 0000000000600388 d _GLOBAL_OFFSET_TABLE_ U printf@@GLIBC_2.2.5 0000000000400230 T _start 00000000006003a8 d str_format
Anonymous
или же: $ nasm -felf64 test.s $ gcc test.o -lc -o test $ ./test Is: 98
Vladimir
А, нет такого файла или каталога - это кривой бинарь с динамичнской линковкой. Интерпретатор неправильно задан
Anonymous
и glibc таки мне нужен для printf
Vladimir
А без принтф никак?
Anonymous
можно
Vladimir
Ну выводи через write
Vladimir
Гемора меньше в разы
Anonymous
выводил, а вдруг мне понадобиться что-то
Anonymous
не системное
Vladimir
Например?
Anonymous
какой-нибудь rand
Vladimir
какой-нибудь rand
Прочитай с /dev/urandom, к примеру
Anonymous
а если мне нужно сокет забиндить?
Vladimir
Динамическая линковка - там надо разбираться с got, plt и прочей сранью, кури ман по ELF
Vladimir
а если мне нужно сокет забиндить?
Это же системные вызовы
Anonymous
$ cat /usr/include/asm/*.h | grep bind #define __NR_mbind 274 #define __NR_bind 361 #define __NR_bind 49 #define __NR_mbind 237 #define __NR_bind (__X32_SYSCALL_BIT + 49) #define __NR_mbind (__X32_SYSCALL_BIT + 237) ?
Vladimir
ну
Vladimir
сокетный интерфейс в пингвине, кстати, сильно от архитектуры проца зависит
Vladimir
Что еще раз доказывает, что линь - это адов набор костылей
Anonymous
А кстати, а TLI в линукс же есть?
Vladimir
Даже номера системных вызовов - полный разброд
Anonymous
Во, а если мне нужен какой-нить atoi?
Anonymous
я же не буду реализовывать в лишний раз
Anonymous
делить каждый символ на эточисло-48 по модулю
Anonymous
или я свою библиотеку захочу сделать(а ld мне такой файл делает)
Anonymous
и использовать