Ungewollte Pfade in S19-datei

OP #6897085
Lesenswert?

Hallo,

ich programmiere einen STM8003F3 mit dem ST Visual Develop und dem 
Cosmic-Compiler. Alles funktioniert wunderbar, aber auch in der 
Release-Version fallen mir Pfadangaben in der .S19-Datei auf, die 
wahrscheinlich auch auf den Mikrocontroller programmiert werden.
Habe schon in den Compile-Optionen nach Debug-Symbolen etc. gesucht, 
allerdings konnte ich nichts verdächtiges finden.

Hat jemand eine Idee, woher die Pfadangaben kommen können?
Ist wie gesagt nur ein kosmetisches Problem, würde mich aber trotzdem 
interessieren.

Stefan


C COMPILER COMMAND LINE:
cxstm8 +warn +mods0 +split -pne -pp -dSTM8S003 -i..\..\..\firmware 
-i..\..\..\..\libraries\stm8s_stdperiph_driver\inc 
-i..\..\..\..\utilities\stm8s_eval 
-i..\..\..\..\utilities\stm8s_eval\common 
-i..\..\..\..\utilities\stm8s_eval\stm8-128_eval $(ToolsetIncOpts) 
-cl$(IntermPath) -co$(IntermPath) $(InputFile)

LINKER COMMAND LINE:
clnk $(ToolsetLibOpts) -o $(OutputPath)$(TargetSName).sm8 
-m$(OutputPath)$(TargetSName).map $(OutputPath)$(TargetSName).lkf
cvdwarf $(OutputPath)$(TargetSName).sm8
Angehängte Dateien:
Gast #6897406
Lesenswert?

Da fällt mir noch was ein:
Vielleicht sind das Teile der debug Informationen.

Deinen compiler kenne ich nicht, bei gcc sind das die switches die mit 
"-g" zu tun haben.

Ein kurzer Test zeigt ca. 3kb debug Informationen:
1
#include <stdio.h>
2

3
int main(void) {
4
  printf("BLABLA\n");
5
  return 0;
6
}

Dann:
1
$ gcc -Wall -g test.c -o debug
2
$ gcc -Wall -g test.c -o nodebug
3
$ ls -al
4

5
-rwxr-xr-x 1 bx bx 16356 Dec  2 12:53 debug
6
-rwxr-xr-x 1 bx bx 13720 Dec  2 12:53 nodebug
7
-rw-r--r-- 1 bx bx    71 Dec  2 12:53 test.c

Gehe ich nun mit "strings" über die beiden binaries kommt da einiges bei 
raus, zuviel zum direkten pasten. Ist ja auch nur ein Beispiel und nicht 
die Lösung.
1
$ strings debug
2
$ strings nodebug
OP #6898206
Lesenswert?

Danke für die Hinweise, ich habe das Problem gefunden.
In der Include-Datei stm8s_conf.h von den Standard Peripheral Library 
steht unten:
1
******************************************************************************
2
  * @file    stm8s_conf.h
3
  * @author  MCD Application Team
4
  * @version V2.3.0
5
  * @date    16-June-2017
6
  * @brief   This file is used to configure the Library.
7
   ******************************************************************************
8
....
9
....
10
/* Uncomment the line below to expanse the "assert_param" macro in the
11
   Standard Peripheral Library drivers code */
12
#define USE_FULL_ASSERT    (1) 
13

14
/* Exported macro ------------------------------------------------------------*/
15
#ifdef  USE_FULL_ASSERT
16

17
/**
18
  * @brief  The assert_param macro is used for function's parameters check.
19
  * @param expr: If expr is false, it calls assert_failed function
20
  *   which reports the name of the source file and the source
21
  *   line number of the call that failed.
22
  *   If expr is true, it returns no value.
23
  * @retval : None
24
  */
25
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
26
/* Exported functions ------------------------------------------------------- */
27
void assert_failed(uint8_t* file, uint32_t line);
28
#else
29
#define assert_param(expr) ((void)0)
30
#endif /* USE_FULL_ASSERT */

Wenn man die Zeile #define USE_FULL_ASSERT auskommentiert, dann 
verschwinden die Pfadangaben. Wenn man's weiß, ist es im Nachhinein 
ziemlich offensichtlich.

Stefan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren