Anton
http://stackoverflow.com/questions/7494244/how-to-change-entry-point-of-c-program-with-gcc
Anton
Но это не то(
Anonymous
уже в закладках)
Anonymous
это не то
Anonymous
трабла то в имени
Александр
А почему решение должно существовать?
Anonymous
накопил 5 статей с хабра и +- 15 с переполненого, итог, ничего
Anton
На вход в прогу передаются количество элементов и массив строк.
Anonymous
Anonymous
заинлайни
Читерство
Anonymous
заинлайни
Хотя мысль...
Anton
Объект должен иметь подобные параметры конструктора.
Anonymous
Требуется написать код программы, который будет использовать изменённую точку входа main : int main(const std::vector<std::string>& args) { cout « "argc = " « args.size() « endl; for (auto& arg : args) cout « "arg = " « arg « endl; return 0; } Ключевые слова: libc, crt0, линковка, RTLD_NEXT, стек, ELF-формат.
Anton
Может кастомный класс написать?
Anonymous
вот собственно текст задания
Александр
Мое предложение - заменить std вектор на свою реализацию, поменяв аргументы на std::myvec с двумя полями внутри
Anonymous
Может кастомный класс написать?
Думал так сделать, но мне сказали, что я слишком хитрый сволоч
Александр
Правда такой вектор будет всегда size == capacity
Александр
Ну и ссылку убрать придется
Anonymous
Ну и ссылку убрать придется
Но все равно спасибо
Александр
Тогда это не вектор)))
Почему? Просто добавление и удаление элемента будет всегда реаллоцировать его
Anonymous
Мне одно интересно, к чему вот это
Anton
@BlackAFH, может старт переписать реально.
Anonymous
Ключевые слова: libc, crt0, линковка, RTLD_NEXT, стек, ELF-формат.
Александр
Компилятор какой?
Anonymous
@BlackAFH, может старт переписать реально.
Это очень жестко, я переписывал, в итоге ошибки все новые и новые, стд не получится использовать
Anonymous
g++
Anton
Не копал, что в старте должно происходить?
Anonymous
Не копал, что в старте должно происходить?
ну тип в старте ссылка на мэйн (чоень грубо говоря)
Anonymous
и если я ее сменю, инициилизация в попу...
Anonymous
просто в С можно было бы так
Александр
Я за переписывание _start. Можно его вынести в .c файл, сэмулировав на Си создание вектора. Например, создав в отдельном cpp функцию void* create_vec(argc, argc), передав затем этот указатель... Аааа, бред пишу
Anonymous
#include <iostream> extern "C" { int _main(void); extern void _exit (register int code); } int _main(void){ std::cout«"Lol\n"; return 0; }
Anonymous
Существует конечно 0.00001% что меня препод затроллил, но эт ослишком маловероятно
Anonymous
это задание для стажера на кафедру
Anonymous
одно из них
Anton
одно из них
http://stackoverflow.com/a/10898040 Может этим как-то можно воспользоваться?
Anonymous
http://stackoverflow.com/a/10898040 Может этим как-то можно воспользоваться?
Хм, тоже в закладках, но наврное был не внимателен, мб и пойдет....
Anonymous
Тоже конечно искажение задания... но боже, это слишком сложная задача для обычного смертного на 3-м курсе..
Anton
Тоже конечно искажение задания... но боже, это слишком сложная задача для обычного смертного на 3-м курсе..
Только осталось вытащить аргументы командной строки. Мы вообще на асме писали, так что не ной.
Anonymous
Спасибо больше за помощь)
Anton
Спасибо больше за помощь)
Если, конечно, помогли.
Anonymous
Если, конечно, помогли.
Эт оне так важно)
Anton
Спасибо больше за помощь)
Задачка интересная, на самом деле.
Anonymous
Задачка интересная, на самом деле.
Это да, в ассемблере точно еще покопаюсь
Daniil
а там не прокатит какое-нибудь неявное преобразование в std::vector<std::string> ?
Daniil
я попробовал набыдлокодить на коленке но чот не взлетело
Anonymous
а там не прокатит какое-нибудь неявное преобразование в std::vector<std::string> ?
Вот честно, не знаю, нужно постараться максимальное кол-во способов придумать, мб количеством задавлю)))
Anton
спасибо за старания)
Это тема: http://stackoverflow.com/a/24718544
Anonymous
Anton
У тебя есть выбор?)
Anonymous
Это тема: http://stackoverflow.com/a/24718544
У меня пока мозги пытаются осмыслить происходящее
Alexey
Народ, помогите. Куда фалы .dll копировать при подключении сторонней библиотеки?
Anton
например
Alexey
Ладно попробую, спасибо
Daniil
да. Чтото типо того есть. Наизусть непомню
Surreal
У тебя есть выбор?)
А /proc/pid/cmdline не катит? Переопределить entry point, в ней прочитать аргументы, создать вектор и передать в main(vector&).
Anonymous
минутку скопирую задачу
Anonymous
Требуется написать код программы, который будет использовать изменённую точку входа main : int main(const std::vector<std::string>& args) { cout « "argc = " « args.size() « endl; for (auto& arg : args) cout « "arg = " « arg « endl; return 0; } Ключевые слова: libc, crt0, линковка, RTLD_NEXT, стек, ELF-формат.
Anonymous
нужно именно сменить точку входа с стандартной на данную
Anonymous
g++
Sasha
Есть кто в джава разбирается?
Anonymous
Ну по заданию ничего не сказано, то, что я написал, это вссе описание задачи)
Anonymous
за весь день уже раз 100 увидел сегфол....
Surreal
Учитывая, что там ссылка на вектор, а вектор сам себя не создаст, то предполагается, что точкой входа будет иная функция, которая создаст вектор и передаст его в обозначенный main.
Surreal
Как это иначе сделать лично мне не ясно.
Anonymous
умный сосед только что это сказал
Vladislav
Зачем? Можно обычный main написать, который будет дергать измененный