Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сборка 32 битной UDF под Linux64 (linux mint 17.2) (Firebird 2.5 LI-V6.3.2.26540) / 2 сообщений из 2, страница 1 из 1
12.04.2016, 18:47
    #39214005
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка 32 битной UDF под Linux64 (linux mint 17.2) (Firebird 2.5 LI-V6.3.2.26540)
Ну в общем понадобилось ибо заказчик принес ноут на который надо установить нашу программу

линкер проругался
undefined reference to '__stack_chk_fail_local'

ничего умнее не нашел окромя как скомпилировать с опцией
-fno-stack-protector

ругаться перестало, библиотека собралась
и даже что-то заработало

осадок остался

Ну да ладно с осадком, дальше хуже
при вызове одной из функций валится все нафиг.

поскольку в linux, ни в С совсем не силен
исключительно методом комментирования
нашел где валится и все, малость в ступоре
ибо ни бум бум

Под спойлером код, буду признателен за помощь


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
#include <ibase.h>
#include <ib_util.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include <locale.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#if defined __BORLANDC__ && defined __WIN32__
#define EXPORT _export
#else
#define EXPORT
#endif

#define ERREXIT(status, rc) {isc_print_status(status); return rc;}


#define CR   13;
#define LF   10;
#define TAB  9;

// здесь куча кода которая не относится к данной проблеме
void FormatDate(ISC_TIMESTAMP *ib_date, char *date_format, int lang, char *result, 
                   int month_form, int quart_form)
{
  struct tm date1;
  char *date_format_upper;
  int sl;
  char replace_with[128];
  char* replace_with2;
  char* cu[5];
  char* cl;
  int word_state;
  char res[128];
  div_t div_res;

  if (!ib_date->timestamp_date) goto exit_;

  word_state = 0;
  res[0] = 0x00;

  replace_with[0] = 0x00;

  sl = strlen(date_format);
  date_format_upper = (char*) malloc (sl+1);
  strcpy(date_format_upper, date_format);

  strcpy(result, date_format);

  isc_decode_timestamp(ib_date, &date1);  // Вот здесь оно валится  ибо если это закомментировать то все вроде работает

// здесь куча кода который закоментарен
  free(date_format_upper);
exit_:
  ;
}

char* Gr_FormatDateRus(ISC_TIMESTAMP *ib_date, char* date_format)
{
  char *result; 
  #ifdef UDF_DEBUG
  result = (char*) malloc (sizeof(char)*80); 
  #else
  result = (char*) ib_util_malloc (sizeof(char)*80); 
  #endif
  result[0] = 0x00;
  FormatDate(ib_date, date_format, 0, result, 0, 0);
  return result;
}



декларация функции в базе
Код: sql
1.
2.
3.
4.
5.
DECLARE EXTERNAL FUNCTION Format_Date_Rus
    TIMESTAMP,                                /*дата + время*/
    CSTRING(80)                               /*формат даты*/
    RETURNS CSTRING(80) FREE_IT               /*форматированная дата*/
    ENTRY_POINT 'Gr_FormatDateRus' MODULE_NAME 'grad_udf';





Если нужна еще какая-то информация, предоставлю

зы. Просьба к авторам не отправлять
ибо автор конкретно этой фунции за давностью лет недоступен да и думаю совсем не помнит уже что делал
частично к некоторым функциям приложил руку и я еще в те времена когда что-то помнил из С

ззы. Избавиться от этой удфки тоже к сожалению не вариант :(
...
Рейтинг: 0 / 0
14.04.2016, 14:31
    #39215717
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка 32 битной UDF под Linux64 (linux mint 17.2) (Firebird 2.5 LI-V6.3.2.26540)
Вопрос снят.

зы. снес FB
установил FB 64-разрядный
подсунул 64 разрядную UDF
и все пошло

ззы. под 32 разрядной FB
подсовывание 32 разрядной UDF
изначально не помогало
её FB "не видел"
поэтому и возникла мысль пересобрать удф
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сборка 32 битной UDF под Linux64 (linux mint 17.2) (Firebird 2.5 LI-V6.3.2.26540) / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]