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
Nikita
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
Anonymous
Александр
Тогда это не вектор)))
Почему? Просто добавление и удаление элемента будет всегда реаллоцировать его
Anonymous
Anonymous
Мне одно интересно, к чему вот это
Anton
@BlackAFH, может старт переписать реально.
Anonymous
Ключевые слова: libc, crt0, линковка, RTLD_NEXT, стек, ELF-формат.
Александр
Компилятор какой?
Anonymous
g++
Anton
Не копал, что в старте должно происходить?
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
Anonymous
Существует конечно 0.00001% что меня препод затроллил, но эт ослишком маловероятно
Anonymous
это задание для стажера на кафедру
Anonymous
одно из них
Anton
одно из них
http://stackoverflow.com/a/10898040
Может этим как-то можно воспользоваться?
Anonymous
Anonymous
Тоже конечно искажение задания... но боже, это слишком сложная задача для обычного смертного на 3-м курсе..
Anton
Anonymous
Anonymous
Спасибо больше за помощь)
Anton
Anonymous
Daniil
а там не прокатит какое-нибудь неявное преобразование в std::vector<std::string> ?
Daniil
я попробовал набыдлокодить на коленке но чот не взлетело
Anonymous
Anonymous
Anton
У тебя есть выбор?)
Alexey
Народ, помогите. Куда фалы .dll копировать при подключении сторонней библиотеки?
Anton
Anton
например
Alexey
Ладно попробую, спасибо
Daniil
да. Чтото типо того есть. Наизусть непомню
Surreal
У тебя есть выбор?)
А /proc/pid/cmdline не катит? Переопределить entry point, в ней прочитать аргументы, создать вектор и передать в main(vector&).
Anonymous
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
Anonymous
умный сосед только что это сказал
Vladislav
Зачем? Можно обычный main написать, который будет дергать измененный
Anonymous