FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Curiosidad ultima version de harbour y BCC 7.70
Posts: 16
Joined: Tue Jan 07, 2025 11:59 AM
Curiosidad ultima version de harbour y BCC 7.70
Posted: Fri Apr 04, 2025 11:12 AM
Desde que he actualizado a la ultima version de Harbour 3.2.0dev (r2502110321) y compilo con BCC 7.70, se me crea en cada carpeta de proyecto un archivo con el nombre de null.map, con el contenido
 Start Length Name Class
 0001:00401000 0001238C8H _TEXT                  CODE
 0002:00525000 0000350D0H _DATA                  DATA
 0003:0055A0D0 00000F694H _BSS                   BSS
 0004:00000000 0000000A4H _TLS                   TLS
Esto ocurre en proyectos con puro harbour utilizando hbmk2
En proyectos FWH construidos con makefile esto no ocurre

Como digo es una simple curiosidad ya que no afecta para nada a los exe construidos, alguien m谩s le ha pasado ?
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Curiosidad ultima version de harbour y BCC 7.70
Posted: Fri Apr 04, 2025 06:40 PM

Estimado Quim,

El archivo null.map que mencionas parece ser un archivo de mapa generado por el enlazador (linker) durante el proceso de compilaci贸n con Harbour 3.2.0dev (r2502110321) y BCC 7.70 al usar hbmk2. Estos archivos .map suelen contener informaci贸n sobre las secciones de memoria del ejecutable resultante, como las que indicas (_TEXT, _DATA, _BSS, _TLS), que corresponden al c贸digo, datos inicializados, datos no inicializados y datos espec铆ficos de subprocesos, respectivamente. Su presencia no afecta el funcionamiento del ejecutable, como bien notas, pero su aparici贸n repentina tras la actualizaci贸n puede ser una peculiaridad del entorno o una configuraci贸n impl铆cita en la nueva versi贸n de Harbour o en c贸mo hbmk2 interact煤a con el enlazador de BCC.

En proyectos con hbmk2, este comportamiento podr铆a estar relacionado con c贸mo el script de construcci贸n invoca al enlazador de Borland (BCC), que por defecto puede estar generando este archivo de mapa incluso si no se especifica expl铆citamente. En contraste, tus proyectos con FWH que usan makefile no muestran este archivo, probablemente porque el proceso de enlace est谩 configurado de manera diferente, omitiendo la generaci贸n del archivo de mapa o redirigi茅ndolo a otro nombre o ubicaci贸n.

Aqu铆 hay algunas posibles razones y pasos para investigar o resolver esta "curiosidad":

Cambio en Harbour o hbmk2: La versi贸n espec铆fica de Harbour 3.2.0dev (r2502110321) podr铆a haber introducido un ajuste en hbmk2 que activa la generaci贸n de archivos de mapa por defecto al usar BCC 7.70. Esto no parece estar documentado como un cambio importante, pero podr铆a ser un efecto secundario de alguna actualizaci贸n en el manejo de opciones del enlazador.

Configuraci贸n del enlazador de BCC: El enlazador de Borland (ilink32.exe o similar) genera archivos .map si se le pasa la opci贸n -M (o si esta se activa impl铆citamente). El nombre null.map sugiere que no se especific贸 un nombre expl铆cito para el archivo de mapa, y el enlazador usa un valor predeterminado (null). Puedes verificar esto ejecutando hbmk2 con la opci贸n -trace para inspeccionar los comandos exactos que se pasan al enlazador.

Diferencia entre hbmk2 y makefiles: En tus proyectos FWH con makefile, es probable que el proceso de enlace est茅 configurado para no generar el archivo .map (por ejemplo, omitiendo la opci贸n -M) o para nombrarlo de acuerdo con el proyecto (como <nombre>.map). Con hbmk2, si no se especifica una opci贸n expl铆cita para controlar esto, el comportamiento por defecto del enlazador podr铆a ser el culpable.

驴Qu茅 puedes hacer?

Confirmar el origen: Ejecuta tu comando hbmk2 con -trace (por ejemplo, hbmk2 tu_proyecto.hbp -trace) y revisa la salida para ver si el enlazador est谩 recibiendo una instrucci贸n que genera el archivo .map. Busca algo como -M o una opci贸n similar en la l铆nea de comando del enlazador.

Desactivar la generaci贸n del archivo: Si no necesitas el archivo .map, puedes intentar pasarle una opci贸n al enlazador a trav茅s de hbmk2. Por ejemplo, agrega -ldflag=-M- a tu comando o archivo .hbp para intentar desactivar la generaci贸n del mapa (aunque la sintaxis exacta depende del enlazador de BCC). Consulta la documentaci贸n de ilink32.exe para confirmar las opciones disponibles.

Especificar un nombre personalizado: Si prefieres que el archivo .map tenga un nombre 煤til en lugar de null.map, puedes usar la opci贸n -map en hbmk2 para definirlo expl铆citamente (por ejemplo, -map=mi_proyecto.map).

Revisar cambios en Harbour: Dado que esto comenz贸 tras actualizar a r2502110321, podr铆as revisar el registro de cambios (ChangeLog) de Harbour en el repositorio oficial para ver si hay menciones sobre modificaciones en hbmk2 o en el soporte para BCC que expliquen este comportamiento.

驴A alguien m谩s le ha pasado?

No hay reportes espec铆ficos y masivos sobre este fen贸meno con Harbour 3.2.0dev (r2502110321) y BCC 7.70 en la comunidad, pero es posible que otros usuarios de BCC y hbmk2 hayan notado algo similar y no lo hayan considerado un problema digno de menci贸n, especialmente porque, como dices, no afecta el resultado final. La aparici贸n de null.map parece m谩s una curiosidad t茅cnica que un error grave.

Si decides investigarlo m谩s a fondo y encuentras la causa exacta (por ejemplo, una opci贸n predeterminada en hbmk2), podr铆as compartirlo con la comunidad de Harbour para documentarlo. Por ahora, si no te molesta su presencia, puedes ignorarlo sin preocupaciones, ya que no tiene impacto funcional.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 16
Joined: Tue Jan 07, 2025 11:59 AM
Re: Curiosidad ultima version de harbour y BCC 7.70
Posted: Sun Apr 06, 2025 08:24 AM
Gracias Antonio & compa帽(IA) ;)

La respuesta correcta es a帽adir el flag -map al fichero de proyecto hbp
#-inc enable incremental build mode
-n -q0 -static -map
Si no se especifica map, se crea por defecto

De todas formas, con las respuestas siempre se aprende, por ejemplo, es una buena pr谩ctica incluir en la llamada hbmk2 -trace

As铆 podemos comprobar exactamente lo que est谩 haciendo entre bambalinas la super utilidad hbmk2 de harbour

Gracias por la ayuda, curiosidad satisfecha !
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista

Continue the discussion